linux中的force kill命令kill -9是否使用C ++应用程序中的new运算符清除动态分配的内存?

问题描述

我有一个要在Oracle Linux OS上运行的C ++应用程序。

考虑一下,我使用new运算符创建了一些对象。尽管我使用过delete运算符来取消分配它,但是force kill命令将无法实现此实现。

但是,如果我强制终止(kill -9)进程,操作系统是否会取消动态分配的内存(使用new运算符)?由于无法找到直接的答案,因此我想了解一些信息。

谢谢。

解决方法

但是,如果我强制终止(kill -9)进程,操作系统是否将动态分配(使用new运算符分配的内存)?

内存通过虚拟内存系统和内存管理单元(MMU)与进程绑定。因此,是的,所有内存(不仅仅是通过new分配的内存)都将被释放。

例外情况是全局进程间通信(IPC)资源,例如共享内存,缓存文件等。

,

当某个进程以某种方式终止时,内核将清除所有进程资源,包括内存和文件对象。当您终止进程时,它将立即停止运行,因此不会运行包含销毁器的清除代码。因此,是的,所有内存都已释放,但是发生的级别比堆和堆栈低得多。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...