2

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

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

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

如果我只是跳过删除所有对象,以便更快地退出,如果有的话会有什么影响?

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

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

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

4

1 回答 1

3

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

您将在终止进程中找到有关在进程终止期间执行的步骤的大量信息。关于您的问题,以下是相关部分:

终止进程会产生以下结果:

...

进程分配的任何资源都被释放。

不过,您可能不应该跳过调试版本中的清理步骤。否则,您将无法获得真正内存泄漏的内存泄漏诊断。

于 2013-09-12T16:59:51.197 回答