【发布时间】:2012-01-25 15:08:55
【问题描述】:
可能重复:
What REALLY happens when you don't free after malloc?
Is freeing allocated memory needed when exiting a program in C
在我的第一个 C 课程中,我被告知我应该在 malloc() 或 calloc() 之后调用 free(),因为它会在动态分配内存后释放空间,否则它将消失(我假设直到系统重新启动)。但是,最近我开始在各种编码站点上阅读,这些内存将在程序结束时释放回来。
哪一个是正确的说法?
我会查看官方规范,但我不知道从哪里获得它(尝试谷歌搜索)。
谢谢。
【问题讨论】:
-
所有与程序相关的内存在终止时被释放。 (如果你创造了僵尸,它们会一直存在)
-
后者有时可能是正确的,但前者是一个非常好的经验法则。
-
@cHao:是的,可能还有很多其他人。这个问题被问了很多。