在atexit()函数中有释放内存的意义吗?
我有一个在启动后被malloc‘的全局变量。我可以写一个atexit()函数来释放它,但是当程序退出时,系统不是要回收所有的内存吗?
我自己整理和主动清理有什么好处吗?
发布于 2008-10-23 19:27:30
不是在C语言中--这就像在你周围的船下沉时重新安排甲板椅一样。
在C++中,答案是不同的,因为对象可以在其析构函数中删除临时文件等等,所以您需要确保这些文件被调用。
发布于 2008-10-23 19:26:41
释放它的一个好处是,如果你曾经做过任何内存泄漏测试,试图在进程的生命周期内将分配与释放相匹配,你就不会从这种故意的泄漏中得到错误的肯定。
发布于 2008-10-28 05:29:17
由于malloc()/free()通常涉及用户空间中存在的大量数据结构,因此在程序结束时占用内存实际上可能会消耗性能。如果数据结构的某些部分被分页到磁盘,那么它们只需要从磁盘加载,然后就会被丢弃!
然而,如果您在不使用free()ing的情况下终止,则调出到磁盘的数据可能会平静地消亡。
当然,在其他时候使用free()通常是有益的,因为进一步的malloc()可以重用您释放的空间,free()甚至可以取消一些内存的映射,然后这些内存可以被其他进程使用。
https://stackoverflow.com/questions/231089
复制相似问题