引用计数

COM不会自动尝试从内存中移除对象,则认为时不再使用对象。 相反,对象程序员必须移除未使用的对象。 程序员确定是否可以移除对象基于引用计数。

COM使用 IUnknown 方法,AddRef版本,托管引用计数。对象的接口。 调用这些方法一般规则是:

  • 每当客户端接收接口指针,必须对 AddRef 接口。

  • 使用接口指针,每当客户端已完成,因此必须调用 Release

在一个简单的实现,每 AddRef 调用递增,并且每 Release 调用减量在对象中的一个计数器变量。 在计数返回时为零,接口不再有任何用户并可以自由从内存中移除它。

reference计数还能实现,以便每对对象(而非单个接口)计数。 在此情况下,每 AddRefRelease 调用委托对对象的一个中心实现,并且,Release 释放整个对象,其引用计数达到零时。

备注

CComObject-使用 new 运算符,派生的对象构造,引用计数为0。因此,必须在成功创建 CComObject后调用 AddRef 的是派生的对象。

请参见

参考

COM 介绍

Managing Object Lifetimes through Reference Counting