gpt4 book ai didi

delphi - 使用 FastMM 了解内存分配位置

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

我正在尝试使用 Delphi 7 调试大型应用程序中的内存使用情况。我能够安装 fastmm debug full dll 并用它解决一些泄漏问题。

我还安装了内存使用跟踪器,让我可以查看分配了哪些 block 以及它们的大小。

我的问题是,有没有办法找出 block 分配的位置?我知道这是可能的,因为如果没有释放内存,则会打印堆栈跟踪。有没有办法“戳”fastmm 让它打印给定分配的堆栈跟踪?

附带问题:如果已知分配的起始地址,是否有办法找出该对象属于哪个类? (假设分配是针对一个对象的。

最佳答案

您可以:

  • 尝试使用LogAllocationBlocksToFile过程。如果其 ALastAllocationGroupToLog 参数小于 AFirstAllocationGroupToLog 或为零,则记录所有 block 及其分配调用堆栈。但是,如果您的应用程序有很多内存分配,请做好长时间等待的准备。我经历了大约 4 小时的等待时间和 1.5Gb 的结果文件。 (旁注:使用 glogg 查看如此大的文件)
  • 修改FastMM4.pas,以便实现的LogCallStack将在界面中可见。或者您可以尝试直接从 FastMM_FullDebugMode.dll
  • 使用它

附带问题:尝试使用 DetectClassInstance 函数。

关于delphi - 使用 FastMM 了解内存分配位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14390934/

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