Application.terminate可以导致内存泄漏吗?

时间:2012-04-03 04:39:33

标签: delphi memory-leaks delphi-xe2

在某个时间点,我必须使用Application.Terminate终止在Delphi XE2中开发的应用程序。

我想确认一下,由于这个原因会有任何记忆丧失吗? 如果是的话,我需要处理的所有可能情况是什么? 以及如何解决这些问题?

2 个答案:

答案 0 :(得分:5)

调用Application.Terminate方法不会产生内存泄漏此方法相当于调用PostQuitMessage函数。资源未正确释放时会导致内存泄漏。要检查应用程序中是否存在内存泄漏,可以将全局变量ReportMemoryLeaksOnShutdown设置为true。

答案 1 :(得分:5)

无论你如何关闭进程,都不会泄漏任何内存。当进程关闭时,操作系统将回收进程拥有的所有内存。

现在,Application.Terminate导致从Application对象开始有序关闭。 Application拥有的所有对象都将被销毁。如果这些对象又拥有其他对象,则拥有的对象将被销毁。但是,就泄漏内存而言,进程无法终止并泄漏内存。进程可能会终止并将某些资源置于错误定义的状态,这就是为什么通常建议以有序的方式终止进程。