【发布时间】:2014-05-03 10:36:28
【问题描述】:
好吧,我想我知道问题的答案,但我更放心。如果你在堆上 malloc 内存并在释放空间之前退出程序,操作系统或编译器会为你释放空间吗?
【问题讨论】:
-
现代操作系统会在程序终止后释放内存。
-
操作系统必须这样做。编译器不能这样做,因为它不存在。它生成的应用程序代码无法执行此操作,因为它可能已经崩溃或刚刚卡住并被 kill-9 或任务管理器强行终止。
-
也可能是该应用程序甚至没有设计为尝试执行此操作,因为它的工作太复杂了,操作系统只需一次调用即可完全正确地完成它。