Delphi仍然保留内存并且不释放,为什么?

Delphi仍然保留内存并且不释放,为什么?,delphi,delphi-7,Delphi,Delphi 7,在我的项目中,我使用从基本窗体继承的MDI子窗体。我的问题是关于内存管理。在使用FormClose事件发布表单(由FreeAndNil发布)之后,Delphi仍然保留内存,不发布 我该怎么办?MDI管理不同还是什么?我怀疑它是否有处理子窗体的功能,即使当您终止一个包含多个子窗体的应用程序时,打开Delphi将释放这些子窗体而不会导致内存泄漏。 要了解发生了什么,请在源项目的代码中插入以下内容: Begin ReportMemoryLeaksOnShutdown:= DebugHook &

在我的项目中,我使用从基本窗体继承的MDI子窗体。我的问题是关于内存管理。在使用FormClose事件发布表单(由FreeAndNil发布)之后,Delphi仍然保留内存,不发布


我该怎么办?MDI管理不同还是什么?

我怀疑它是否有处理子窗体的功能,即使当您终止一个包含多个子窗体的应用程序时,打开Delphi将释放这些子窗体而不会导致内存泄漏。 要了解发生了什么,请在源项目的代码中插入以下内容:

Begin
    ReportMemoryLeaksOnShutdown:= DebugHook <> 0; 
     …
 end.
开始
ReportMemoryLeaksOnShutdown:=DebugHook 0;
…
结束。
在IDE中运行应用程序,执行通常执行的操作,然后关闭应用程序。Delphi将通知您它遇到的内存泄漏以及它是什么的提示


在我的应用程序中,当测试(调试)时,Delphi会在关机时通知内存泄漏。

请显示演示问题的完整代码,并说明如何诊断内存泄漏。释放窗体不会释放它可能创建的任何对象。您的MDI孩子可能不会自己清理。没有代码,我们就帮不上忙。学习使用FastMM可能会为您指明正确的方向。@J。。。仅当对象是在没有所有者的情况下创建的,并且没有释放它们的析构函数时。但是,如果对象是使用所有者创建的,则释放所有者将释放对象。onur很可能正在使用任务管理器并得出错误的结论。@onur kose:你怎么知道内存没有释放?好吧,你需要追踪你的泄漏。不要使用任务管理器,那是错误的工具。获取FastMM的完整版本并使用其泄漏检测。