【发布时间】:2017-01-27 12:44:42
【问题描述】:
我创建了一个控制台应用程序并设置了 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 中。
-
你可以尝试我的
AutoConsole单元,见这里:rvelthuis.blogspot.de/2016/07/new-velthuisautoconsole-unit.html。只需将其添加到您的控制台程序即可。 -
在“system.end”上添加断点。
-
FWIW 我必须按 Ok 来关闭 XE2 中的对话框 - System.ScanForMemoryLeaks 调用 MessageBoxA 阻止执行。
-
@SertacAkyuz 他们真的在后来的一些德尔福中“优化”了它。 :-/
标签: delphi memory-leaks delphi-10-seattle