我可以使用TVirtualMethodInterceptor实现实例计数监控吗?

mjn*_*mjn 5 delphi memory-management

虚拟方法拦截 - 与Delphi XE一起引入 - 可用于"代理"方法,以便可以在原始方法之前和之后执行自定义代码.

这可以用来通过代理虚拟方法TObject.AfterConstruction和TObject.BeforeDestruction来保持Delphi应用程序中所有对象实例的计数吗?

如果是,这可能是在运行时分析FastMM4内存分配统计信息的简单方法(使用对象的InstanceSize属性并将其与分配的内存块进行匹配).


更新:很抱歉从DocWiki信息中提出一个很容易回答的问题 - 我先阅读了链接的文章并且只略过了示例代码

Dav*_*nan 4

不,那是行不通的。从文档中,我强调:

允许用户动态拦截特定类类型的指定实例上的虚拟方法调用。

问题是您需要先掌握每个实例,然后才能进行代理。但您希望通过代理来获取实例。所以你现在陷入了先有鸡还是先有蛋的局面。