min*_*nel 5 c linux
假设一个程序有内存泄漏.
1)当进程死亡(正常或分段错误)时,那些泄漏的内存是否被释放?
2)一个过程持有的其他资源怎么样?
Rad*_*nej 7
对于大多数现代操作系统(Linux,来自NT 3.5左右的窗口),是的.
Jen*_*edt 2
我认为,在所有现代系统上,堆栈和堆内存都被释放,文件描述符也被关闭。
在 POSIX 系统上,有许多资源在进程退出时不会释放,例如共享信号量、消息队列和内存段。这些本来是要在进程之间持久存在的,所以它们根本做不到。应用程序有责任释放它们。
例如,它可以使用on_exit处理程序来做到这一点,但通常有一种更简单的方法。对于内存段,您通常会shm_unlink在所有进程都打开这样的段后使用。当最后一个进程(及其该段的文件描述符)关闭时,该段将不再存在。
on_exit
shm_unlink
归档时间:
13 年 前
查看次数:
1001 次
最近记录: