在COM对象(Delphi)中使用FastMM4

在COM对象(Delphi)中使用FastMM4,delphi,fastmm,Delphi,Fastmm,我使用过FastMM,它是检测泄漏和内存问题的好工具。 但是现在我尝试检查一个用Delphi制作的COM服务器,并且报告不一致。 我曾尝试在DLL中使用Shearm和其他工具配置FastMM,但我知道情况不应该如此(COM服务器必须是一个与使用它的二进制文件隔离的黑盒,而不是共享MM)。 所以我应该如何配置它? 我应该在服务器项目中启用什么定义,以便FastMM报告COM服务器上的泄漏 编辑 我添加了一个delphi项目作为示例。它由一个带有泄漏的COM in proc对象和一个使用该对象的E

我使用过FastMM,它是检测泄漏和内存问题的好工具。 但是现在我尝试检查一个用Delphi制作的COM服务器,并且报告不一致。 我曾尝试在DLL中使用Shearm和其他工具配置FastMM,但我知道情况不应该如此(COM服务器必须是一个与使用它的二进制文件隔离的黑盒,而不是共享MM)。 所以我应该如何配置它? 我应该在服务器项目中启用什么定义,以便FastMM报告COM服务器上的泄漏


编辑

我添加了一个delphi项目作为示例。它由一个带有泄漏的COM in proc对象和一个使用该对象的EXE项目(也带有泄漏)组成。执行客户端时,只有FastMM4显示客户端泄漏报告。未检测到(或未报告)服务器泄漏:

好奇:在服务器中,如果我使用Delphi泄漏报告(ReportMemoryLeaksOnShutdown)而不是FastMM,那么服务器泄漏是由Delphi发现的


另一个澄清:my FastMM4Options.inc未被触及,因为它出现在FastMM4源文件中

如果您将COM对象配置为在进程外服务器进程中运行,以便COM对象的创建启动EXE文件,则您应该可以自由使用FastMM,如您所述与调用进程隔离


如果COM以这种方式启动EXE文件,默认情况下,它将在释放最后一个对象时终止,除非您使用
ComServer.onlastrease
事件覆盖此行为(ComServer在
System.Win.ComServ.pas
单元中声明)。

谢谢,但我在proc server中运行(通过C++中的CreateComObject函数或CoCreateInstance)我添加了一个示例以使我的问题更准确(我编辑了我的原始问题)