在我用 C 和 C++ 编写的程序中,我将新建一个对象来完成任务,然后删除该对象。
在新建对象之后和删除对象之前,如果用户按ctrl+c中断进程,将导致删除不被调用并且发生内存泄漏。
我应该怎么做才能避免这种情况?
此外,如果操作系统回收了内存,那么打开的文件呢?它们是由操作系统关闭还是我应该手动关闭它们?
最佳答案
在基于虚拟内存的系统中,当进程终止时,所有内存都返回给操作系统,无论它是否在应用程序代码中显式释放。然而,其他资源可能并非如此,您可能希望彻底释放这些资源。在这种情况下,您需要为 SIGINT
信号(通过 Ctrl+C 接收)提供自定义信号处理程序,请参见例如http://linux.die.net/man/2/sigaction .
关于c - linux下按ctrl+c时如何避免内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4800404/