0

我正在使用 RAD Studio 10.2.3。

我正在尝试使用 FastMM4 在我的 C++Builder 64 位应用程序中查找内存泄漏。

所以我下载了 FastMM4。我有最新版本 4.993。

问题是代码的某些部分有点过时,需要调整。

例如,我需要重新编译FastMM_FullDebugMode.dll. 这个没问题,因为包含了源代码。

问题是 DLL 与.lib文件一起工作,不幸的是,该文件适用于 32 位应用程序。

无论如何我都试过了,但我收到以下错误消息:

[ilink64 错误] 致命:无效的目标文件 'FASTMM_FULLDEBUGMODE.LIB'

我很确定这是因为我需要一个 64 位库,即.a(不是.lib)。

所以,我试图找到FastMM_FullDebugMode.lib源代码来为 64 位应用程序重新编译。但我在 GitHub 上找不到。

有人知道我在哪里可以找到并下载该源代码吗?

我确认库文件问题已解决!但我遇到了另一个。我收到以下弹出错误消息:

“FastMM4 无法安装,因为内存已通过默认内存管理器分配。FastMM4.pas 必须是项目 dpr 文件中的第一个单元。”

我确信我遵循了所有步骤。在我的项目“Options > Build order”中,我将 FastMM4Messages,pas 首先放入,然后是文档中所写的 FastMM4.pas。我还添加了: USEOBJ("FastMM4BCB.cpp"); 在我的项目主文件中

那么,如何解决这个错误呢?


经过验证,我不得不得出结论,FastMM$ 不能与 C++ Builder 10.2 一起使用。我不知道它是否可以与以前版本的 C++ Builder 一起使用。我注意到一些在 FastMM4 中使用并且不能与 C++ Builder 一起使用的函数:

  1. IsMemoryManagerSet 在 C++ Builder 中始终为真 https://docwiki.embarcadero.com/Libraries/Tokyo/en/System.IsMemoryManagerSet

  2. GetHeapStatus 已弃用 https://docwiki.embarcadero.com/Libraries/Tokyo/en/System.GetHeapStatus

我试图用局部变量替换 IsMemoryManagerSet,用 GetMemoryManagerState 替换 GetHeapStatus,但这并没有解决问题。不能让 FastMM4 工作。

所以,最简单的解决方案:有人知道我可以在 C++ Builder 10.2.3 中使用的另一个免费内存泄漏检测应用程序吗?真正有效的东西?

4

0 回答 0