在某个时间点,我必须使用Application.Terminate终止在Delphi XE2中开发的应用程序。
我想确认一下,由于这个原因会有任何记忆丧失吗? 如果是的话,我需要处理的所有可能情况是什么? 以及如何解决这些问题?
答案 0 :(得分:5)
调用Application.Terminate
方法不会产生内存泄漏此方法相当于调用PostQuitMessage函数。资源未正确释放时会导致内存泄漏。要检查应用程序中是否存在内存泄漏,可以将全局变量ReportMemoryLeaksOnShutdown
设置为true。
答案 1 :(得分:5)
无论你如何关闭进程,都不会泄漏任何内存。当进程关闭时,操作系统将回收进程拥有的所有内存。
现在,Application.Terminate
导致从Application
对象开始有序关闭。 Application
拥有的所有对象都将被销毁。如果这些对象又拥有其他对象,则拥有的对象将被销毁。但是,就泄漏内存而言,进程无法终止并泄漏内存。进程可能会终止并将某些资源置于错误定义的状态,这就是为什么通常建议以有序的方式终止进程。