c - linux下按ctrl+c时如何避免内存泄漏?

标签 c memory-leaks

在我用 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/

相关文章:

Haskell:如何摆脱内存泄漏

java - 如何为java程序分配堆内存

c - 二维指针的大小

c - 自定义共享 HashMap 实现

c - 删除二叉树中的一个叶节点

C 程序未终止

ios - 分配的对象不能在单独线程的循环中释放

objective-c - 废弃内存和内存泄漏有什么区别?

memory-leaks - 如何解码 node.js 中内存数据的含义并调试内存泄漏?

c - 为什么使用 -O(1/2/3) 选项进行优化会干扰 scanf()?