gpt4 book ai didi

delphi - 使用控制台应用程序报告关闭时的内存泄漏

转载 作者:行者123 更新时间:2023-12-03 14:45:20 26 4
gpt4 key购买 nike

我创建了一个控制台应用程序并设置 ReportMemoryLeaksOnShutdown := True。

我创建了一个 TStringList 但没有释放它。

当程序完成执行时,我会短暂地看到内存泄漏,但随后控制台关闭。

我尝试添加 ReadLn;到最后,但当我这样做时它只显示一个空白的控制台窗口,这是有道理的。

我需要找到一种方法来在内存泄漏报告之后、程序完全关闭之前暂停执行。

我正在使用 Delphi 10 西雅图。

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 所评论的那样,在 system 单元的 end. 上放置一个断点。

您还可以将内存泄漏报告重定向到文件。从下载完整版本的 FastMM

https://sourceforge.net/projects/fastmm/

或者更好,感谢 Arioch 'The,来自这里:

https://github.com/pleriche/FastMM4

并在FastMM4Options.inc中设置所需的选项

关于delphi - 使用控制台应用程序报告关闭时的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39579740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com