请问,程序错误终止时,malloc分配的堆内存会自动释放吗?xiexie

请教,程序异常终止时,malloc分配的堆内存会自动释放吗?xiexie
请教,程序异常终止时,malloc分配的堆内存会自动释放吗?xiexie 
------解决思路----------------------
不是自动释放, 而是被系统收回.
------解决思路----------------------
程序都终止了,还有什么可以留下
------解决思路----------------------
引用:
Quote: 引用:

程序都终止了,还有什么可以留下

那我们还用担心比如“内存崩溃”“内存泻漏”吗?即使是堆变量,即使没有free,只要程序结束/异常终止了,也自动free了?


问题是很多程序不能随意退出
靠程序退出来解决内存泄漏是下下策
------解决思路----------------------
引用:
Quote: 引用:

程序都终止了,还有什么可以留下

那我们还用担心比如“内存崩溃”“内存泻漏”吗?即使是堆变量,即使没有free,只要程序结束/异常终止了,也自动free了?

很多时候,内存会泄露,直到内存被耗尽,程序才奔溃
------解决思路----------------------
我们程序使用的内存是虚拟内存,使用的时候映射到物理内存上,当程序崩溃以后,系统就收回了映射的部分,所以,不是是自动free掉,而是强制收回了
------解决思路----------------------
引用:
Quote: 引用:

程序都终止了,还有什么可以留下

那我们还用担心比如“内存崩溃”“内存泻漏”吗?即使是堆变量,即使没有free,只要程序结束/异常终止了,也自动free了?


服务程序是要长期运行的,可能一年365天一直运行着,如果有内存泄露,超过虚拟内存最大限度,程序就会崩溃。
------解决思路----------------------