我已经创建了一个控制台应用程序并设置了ReportMemoryLeaksOnShutdown:= True.
我已经创建了一个TStringList但没有释放它.
程序完成执行后,我会看到内存泄漏一小段时间,然后控制台关闭.
我试过添加一个ReadLn;到最后,但是当我这样做时它只显示一个空白的控制台窗口,这是有道理的.
我需要找到一种在内存泄漏报告之后暂停执行的方法,但是在完成程序关闭之前.
我正在使用Delphi 10 Seattle.
program Project1;
{$APPTYPE CONSOLE}
uses
System.Classes,System.SysUtils;
var
s : TStringList;
begin
try
ReportMemoryLeaksOnShutdown := True;
s := TStringList.Create;
//ReadLn doesn't work here,which makes sense.
except
on E: Exception do
Writeln(E.ClassName,': ',E.Message);
end;
//I need to be able to pause the program somewhere after the end statement here.
end.
解决方法
最简单的方法是在先前打开的命令窗口中运行应用程序.
如果您在IDE中运行时仍坚持查看内存泄漏报告,请执行以下操作:
>在GetMem.inc中找到ShowMessage过程(Delphi 10 Seattle中的第4856行)
>在最后放置一个断点;那个程序.
或者,正如Sertac Akyuz评论的那样,最后提出一个断点.系统单元.
您还可以将内存泄漏报告重定向到文件.从中下载完整版的FastMM
https://sourceforge.net/projects/fastmm/
或者更好,感谢Arioch’The,从这里:
https://github.com/pleriche/FastMM4
并在FastMM4Options.inc中设置所需的选项