加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:25:15 所属栏目:大数据 来源:网络整理
导读:我已经创建了一个控制台应用程序并设置了ReportMemoryLeaksOnShutdown:= True. 我已经创建了一个TStringList但没有释放它. 程序完成执行后,我会看到内存泄漏一小段时间,然后控制台关闭. 我试过添加一个ReadLn;到最后,但是当我这样做时它只显示一个空白的控
我已经创建了一个控制台应用程序并设置了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中设置所需的选项

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读