【发布时间】:2011-09-14 20:59:10
【问题描述】:
可能重复:
Is freeing allocated memory needed when exiting a program in C
我正在阅读"Freeing Memory Allocated with malloc"的页面并看到这句话:
在程序结束时释放块是没有意义的,因为当进程终止时,程序的所有空间都会归还给系统。
我知道作者想说什么,但句子不应该是:
在程序结束时释放块是没有意义的,因为当进程终止时,程序的所有空间都归还给系统,尽管你仍然应该确保你的程序释放了所有的 malloc'ed退出前的内存。
或者在进程终止之前不释放内存是常见的做法吗?
【问题讨论】:
-
如果无论如何都会释放所有内存,为什么要确保在程序存在之前释放所有内存?对我来说,这似乎是不必要的。不过,如果有任何理由应该知道你应该这样做会很有趣!
-
@Blagovest:啊!类似的问题。在我的辩护中,我确实进行了搜索,但可能错过了这一点。我也投票赞成结束。
-
@Ancide:代码重用是原因之一。如果你的
main函数,或者它调用的东西来做繁重的工作,“泄漏”内存,那么你就不能将该代码用作其他东西的一部分。也许您不想这样做,这没关系,但这确实意味着您必须以某种方式区分适合一般用途的代码和只应在调用返回后不久退出的进程中调用的代码。