104得票1回答
有没有一种编程方式可以判断FastMM是否释放了特定的内存块?

我正在尝试检测一块内存是否被释放。当然,管理器会通过对话框或日志文件告诉我,但如果我想将结果存储在数据库中怎么办?例如,我想在数据库表中有给定块分配的例程名称。 阅读FastMM文档后,我知道自从版本4.98以来,我们有可能被管理器通知内存分配、释放和重新分配发生的情况。例如,OnDebug...

53得票6回答
如何获取Delphi程序使用的内存

我知道如何使用GlobalMemoryStatusEx获取系统内存使用情况,但它只告诉我整个操作系统正在使用的内存。 我真的希望我的程序报告它单独分配和使用了多少内存。 在我的Delphi 2009程序中,是否有任何方式调用Windows函数或某些FastMM功能,以查找仅由我的程序分配的...

7得票6回答
如何使用FastMM跟踪棘手的内存泄漏问题?

将项目从Delphi 2007升级到Delphi 2009后,我遇到了一个未知的内存泄漏问题,目前我一直在尝试使用fastMM进行跟踪,以下是fastMM堆栈跟踪报告: A memory block has been leaked. The size is: 20 This block w...

16得票1回答
如何在FastMM4中启用完整的调试模式?

我不知道如何使用FastMM。我从SourceForge下载了它,并将FastMM4Messages.pas和FastMM4.pas放置在我的dpr文件的顶部。 现在,我调用该过程来泄漏一些内存:procedure testMemoryFastMM; var str : T...

13得票1回答
如何在DUnit中使用FastMM开启内存泄漏跟踪?

在GUI测试运行器中,内存泄漏检查的菜单项不可用(灰色)。是否有一种特殊的开关我还没有发现可以激活它们? 使用Delphi 2009或sourceforge Subversion库中的DUnit 9.4以及FastMM4.92。

12得票2回答
从FastMM获取更长的堆栈跟踪?

当FastMM记录内存泄漏时,它会包括一条回溯信息,回溯深度为9层调用。问题在于这个回溯信息太笼统了,难以轻易地定位问题。回溯信息中的最后一个函数调用至少被调用了50次,而且泄漏的对象是非常常见的。 我该怎么做才能让回溯信息更长? 当然欢迎提供更容易定位泄漏的技巧,大多数泄漏的对象都是接口...

7得票2回答
如何配置FastMM以便在dll中检测内存泄漏

我不知道如何检测静态或动态链接的DLL中的内存泄漏。我只想检测DLL中的泄漏,而且我不想在DLL和应用程序之间共享内存管理器。此外,该DLL与运行时包相链接。 我的示例DLL如下所示: library dll; uses fastmm4, System.SysUtils, Sy...

8得票5回答
Delphi中抽象错误的可能模糊原因是什么?

在 Delphi 7 项目中,我们安装了 FastMM。不久之后,我们注意到其中一个窗体在关闭时开始发出“抽象错误”消息。我已经进行了大量调试,但到目前为止还找不到原因。通常出现此错误消息的原因似乎不适用于此处。应用程序没有定义抽象类。我还在窗体中搜索可能使用 TStrings 或类似内容的地...

19得票4回答
如何从FastMM获取堆栈跟踪

我注意到在下面的帖子中,你可以从FastMM获取堆栈跟踪,显示对象的分配位置: 如何使用FastMM跟踪棘手的内存泄漏? 但是我找不到关于如何在Delphi 2009中启用此功能的信息。 我已将ReportMemoryLeaksOnShutdown设置为true以获取基本报告,但我该如何...

7得票1回答
如何在FastMM中隐藏预期的内存泄漏?

我有一个示例应用程序,展示了以下问题: program FalseMemLeak; uses ShareMem; var o: TObject; begin o := TObject.Create; // "good" leak RegisterExpectedMemor...