【发布时间】:2011-12-29 17:35:21
【问题描述】:
我今天尝试创建 FireMonkey 应用程序并将 ReportMemoryLeaksOnShutdown 添加到项目文件以检测内存泄漏,但这在 FireMonkey 中不起作用。你能告诉我,有什么问题吗?这是某种错误吗?
我在项目文件中的代码:
{$IFDEF DEBUG}
ReportMemoryLeaksOnShutdown := True;
{$ENDIF}
Application.Initialize;
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
我的代码必须产生内存泄漏:
procedure TfrmMain.Button1Click(Sender: TObject);
var
lStrings: TStringList;
begin
lStrings := TStringList.Create;
lStrings.Add('test');
ShowMessage(lStrings.CommaText);
end;
我激活了调试配置,但没有报告任何内存泄漏。
【问题讨论】:
-
在 XE2 Update 2 中运行代码会显示“意外内存泄漏”对话框。当然,在按下按钮并关闭应用程序之后。尝试在没有 $ifdef 调试的情况下运行您的代码
-
如果我在没有调试条件的情况下运行没有区别。也许 Update2 解决了这个问题,因为我在 Update1 上。
-
@evilone,我在 Mac OS 上也遇到了同样的问题,我正在运行更新 2。没有关于 Mac 关机的报告。它会在针对 32 位 Windows 时显示。
-
一旦你开始工作,你会发现 FMX 像筛子一样漏水,至少 Chris Rolliston 说。
-
@David:ReportMemoryLeaksOnShutdown 仅适用于 Windows(基本上是 FastMM),而 Chris Rolliston 仅谈到了 OS X 泄漏。
标签: delphi memory-leaks delphi-xe2 firemonkey