在Windows应用程序中不释放内存的影响?

时间:2013-09-12 16:54:26

标签: windows memory memory-leaks

我有一个MFC C ++应用程序,通常在系统托盘中不断运行。

它在内存中分配了一个非常广泛的对象树,当应用程序需要关闭时,它会导致应用程序需要几秒钟才能释放。

我的所有对象都是使用new分配的,通​​常使用delete释放。

如果我只是跳过删除所有对象,为了更快地退出,有什么影响?

Windows是否意识到进程已停止并自动回收内存?

我知道不释放分配的内存几乎是亵渎神灵,但我想我会要求看看其他人的想法。

只有当用户系统关闭或者他们选择自行关闭程序时,应用程序才会关闭。

1 个答案:

答案 0 :(得分:3)

当进程终止时,系统将回收所有资源。这包括释放内核对象的开放句柄和分配的内存。如果在进程终止期间没有释放内存,则对操作系统没有任何负面影响。

您可以在Terminating a process找到有关在流程终止期间执行的步骤的重要信息。关于您的问题,以下是相关部分:

  

终止进程有以下结果:

     

...

     

该进程分配的所有资源都将被释放。

您可能不应该跳过调试版本中的清理步骤。否则,您将无法获得内存泄漏诊断以解决实际内存泄漏问题。