我正在研究一个解析器,它将通过FASTMM4内存泄漏报告并将所有相关数据存储在定制的结构/类中。我使用 VirtualTreeView 将泄漏实例的每个类显示为树中的一个节点。树——请注意,第一个节点显示"未知"。这是因为 FASTMM 调用一个方法 AClass 来确定天气它是否是一个类。当它找到自定义结构时,它会将它们标记为未知,这不会使我的报表分析器非常有效,因为大多数内存泄漏来自这些自定义结构和记录。
问:有没有办法使用 DebugInfo 或其他工具(如 JVCL)来收集这些调试符号,并将它们的内存地址与内存泄漏报告文件中的内存地址进行比较?我希望我的树停止显示未知并显示这些自定义结构的名称。我是德尔福编程的新手,甚至更熟悉解决内存泄漏的问题,所以任何帮助都意义重大!
也许扩展的RTTI(Delphi 2010更新)可以用来创建一个类型字典,它只保存typeinfo指针和所有"非类"类型的名称。
可以使用条件定义启用此功能,以避免其在正常操作中的开销。