首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在atexit()中释放

在atexit()中释放
EN

Stack Overflow用户
提问于 2008-10-23 19:24:10
回答 8查看 3.6K关注 0票数 13

在atexit()函数中有释放内存的意义吗?

我有一个在启动后被malloc‘的全局变量。我可以写一个atexit()函数来释放它,但是当程序退出时,系统不是要回收所有的内存吗?

我自己整理和主动清理有什么好处吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-10-23 19:27:30

不是在C语言中--这就像在你周围的船下沉时重新安排甲板椅一样。

在C++中,答案是不同的,因为对象可以在其析构函数中删除临时文件等等,所以您需要确保这些文件被调用。

票数 22
EN

Stack Overflow用户

发布于 2008-10-23 19:26:41

释放它的一个好处是,如果你曾经做过任何内存泄漏测试,试图在进程的生命周期内将分配与释放相匹配,你就不会从这种故意的泄漏中得到错误的肯定。

票数 15
EN

Stack Overflow用户

发布于 2008-10-28 05:29:17

由于malloc()/free()通常涉及用户空间中存在的大量数据结构,因此在程序结束时占用内存实际上可能会消耗性能。如果数据结构的某些部分被分页到磁盘,那么它们只需要从磁盘加载,然后就会被丢弃!

然而,如果您在不使用free()ing的情况下终止,则调出到磁盘的数据可能会平静地消亡。

当然,在其他时候使用free()通常是有益的,因为进一步的malloc()可以重用您释放的空间,free()甚至可以取消一些内存的映射,然后这些内存可以被其他进程使用。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/231089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档