我有一个MFC C ++应用程序,通常在系统托盘中不断运行。
它在内存中分配了一个非常广泛的对象树,当应用程序需要关闭时,它会导致应用程序需要几秒钟才能释放。
我的所有对象都是使用new
分配的,通常使用delete
释放。
如果我只是跳过删除所有对象,为了更快地退出,有什么影响?
Windows是否意识到进程已停止并自动回收内存?
我知道不释放分配的内存几乎是亵渎神灵,但我想我会要求看看其他人的想法。
只有当用户系统关闭或者他们选择自行关闭程序时,应用程序才会关闭。
答案 0 :(得分:3)
当进程终止时,系统将回收所有资源。这包括释放内核对象的开放句柄和分配的内存。如果在进程终止期间没有释放内存,则对操作系统没有任何负面影响。
您可以在Terminating a process找到有关在流程终止期间执行的步骤的重要信息。关于您的问题,以下是相关部分:
终止进程有以下结果:
...
该进程分配的所有资源都将被释放。
您可能不应该跳过调试版本中的清理步骤。否则,您将无法获得内存泄漏诊断以解决实际内存泄漏问题。