日期:2014-05-16  浏览次数:21116 次

Ctrl+C中断时,如何保证内存释放?
本帖最后由 nameofhsw 于 2013-05-15 09:36:39 编辑
如果程序运行中,被人为使用Ctrl+C关闭,我看了下,应该没有走到析构函数,那么,怎么保证程序new的内存能够在异常退出的情况下被delete呢?
另外,在其他地方看到这么一段话:
linux系统内存管理的特点
linux的进程结束后,它占用的资源全部释放,但是内存仅仅是设置了标志,标志了这部分内存已经不再使用,可以被重新分配的。
当进程需要内存时,linux系统首先从空闲内存中查找分配,空闲内存不足时就会使用不再使用的内存;另外,如果你的程序又一次运行,系统直接使用内存中的数据,不再从文件系统读组,提高了效率。这样一来,linux的系统使用律会很高,服务器的在98%以上;这样做的目的是:linux认为内存是最宝贵的资源,充分利用,不能让他空闲。
 
这是不是表示,可以不用管了?

------解决方案--------------------
要管啊,红色的字是操作系统的优化,那个是对已经释放的内存快的优化,你没释放,那快内存是不能在用的。
你可以注册ctrl+c信号,然后在注册函数里面delete,就可以了
------解决方案--------------------
程序都结束,剩下的工作就交给操作系统吧。。。人家比你更专业。


另外,如果你的程序又一次运行,系统直接使用内存中的数据,不再从文件系统读组,提高了效率


这段话你是在哪里看到的?