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

时间:2012-03-20 17:25:27

标签: delphi memory-management

Virtual method interception - 在Delphi XE中引入 - 可用于“代理”方法,以便可以在原始方法之前和之后执行自定义代码。

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

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


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

1 个答案:

答案 0 :(得分:3)

不,那不行。从documentation,我强调:

  

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

问题是您需要在代理之前掌握每个实例。但是你希望代理以获取实例。所以你现在陷入鸡蛋和鸡蛋的境地。