gpt4 book ai didi

delphi - FastMM4,如何读取日志文件?

转载 作者:行者123 更新时间:2023-12-03 15:43:48 25 4
gpt4 key购买 nike

我正在开发一个软件,所以我刚刚开始在我的项目中使用 FastMM4(真正的)。

我在网上找到了有关如何在 FastMM4 中获取行号的信息,我得到了行号,但我可以弄清楚日志中的其他信息意味着什么?

我在日志文件中有这个

This block was allocated by thread 0x15F8, and the stack trace (return addresses) at     the time was:
402E86 [system.pas][System][System.@GetMem][2648]
403A3B [system.pas][System][System.TObject.NewInstance][8824]
403DAA [system.pas][System][System.@ClassCreate][9489]
403A70 [system.pas][System][System.TObject.Create][8839]
46A257 [u_home.pas][u_home][u_home.TForm1.SpeedButton1Click][80] {<-memory leak is here, but what are the Other detections?}
443AAC [Controls.pas][Controls][Controls.TControl.Click][5226]
46958B [Buttons.pas][Buttons][Buttons.TSpeedButton.Click][1211]
46956B [Buttons.pas][Buttons][Buttons.TSpeedButton.MouseUp][1204]
443FB2 [Controls.pas][Controls][Controls.TControl.DoMouseUp][5352]
441BA0 [Controls.pas][Controls][Controls.TControl.SetMouseCapture][4379]
444042 [Controls.pas][Controls][Controls.TControl.WMLButtonUp][5364]

The block is currently used for an object of class: TStringList

The allocation number is: 440

这里的泄漏

   46A257 [u_home.pas][u_home][u_home.TForm1.SpeedButton1Click][80] {<-memory leak is here, but what are the Other detections?}

我的代码

 procedure TForm1.SpeedButton1Click(Sender: TObject);
var
str : TStringList;
begin
str := TStringList.Create; {<--im not freeing the, so leak}

end;

enter image description here

这是调用堆栈 enter image description here

我在网上搜索过,但我不知道其他检测结果是什么...

402E86 [system.pas][System][System.@GetMem][2648]
403A3B [system.pas][System][System.TObject.NewInstance][8824]
403DAA [system.pas][System][System.@ClassCreate][9489]
403A70 [system.pas][System][System.TObject.Create][8839]

{Other then this}
46A257 [u_home.pas][u_home][u_home.TForm1.SpeedButton1Click][80] {<-memory leak is here, but what are the Other detections?}
{Other then this}

443AAC [Controls.pas][Controls][Controls.TControl.Click][5226]
46958B [Buttons.pas][Buttons][Buttons.TSpeedButton.Click][1211]
46956B [Buttons.pas][Buttons][Buttons.TSpeedButton.MouseUp][1204]
443FB2 [Controls.pas][Controls][Controls.TControl.DoMouseUp][5352]
441BA0 [Controls.pas][Controls][Controls.TControl.SetMouseCapture][4379]
444042 [Controls.pas][Controls][Controls.TControl.WMLButtonUp][5364]

我使用delphi 2006

我也在 delphi 6、delph 7 中打开并尝试了相同的操作

已检查我发现这与 fastMM$ 检测和 delphi 中已经存在的一些泄漏的注册有关。 How to track down tricky memory leak with fastMM?这是为了注册泄漏,但它们是错误吗? Using FastMM4, how to register leaked string?

还有FastMM4, Delphi6, Leak of TApplication?

或者它们只是导致内存泄漏的步骤吗?

最佳答案

日志中包含导致内存分配泄漏的调用堆栈。

您可以在问题的调用堆栈中看到它有多么有用。想象一下,您只有顶行,即导致泄漏的调用

402E86 [system.pas][System][System.@GetMem][2648]

该信息本身几乎没有什么用处,因为所有堆分配都通过 GetMem 进行。调用堆栈将您指向导致调用 GetMem 的事件。这就是查明导致泄漏的原因。

关于delphi - FastMM4,如何读取日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071185/

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