CR的代码文本

all for learning about the world
  订阅 订阅  :: 管理

COM技术内幕第四章笔记-引用计数

Posted on 2010-07-27 13:17  mumuliang  阅读(241)  评论(0编辑  收藏  举报

IUnknown的另外两个成员函数AddRef和Release是引用计数的代码实现。

COM组件都会维护一个表示引用计数的数值。

客户取得一个接口时,计数值+1——AddRef,使用完后-1——Release。

为0时,组件可将自己从内存中删除。

关于此有三条简单的规则:

1、在返回之前调用AddRef。对与返回接口指针的函数,在返回之前,用相应的指针调用AddRef。QueryInterface、CreateInstance。这样一来,客户从实现处得到接口后就无需AddRef。

2、使用完接口后Release。

3、赋值后AddRef。例如在将一个接口指针赋值给另外一个接口指针时,后者应调用AddRef。意味着:在给某个接口指定别名时都应调用AddRef。

如果是别名的话,也就没有后者前者的区别了吧?!?!。

“对于客户而言,每个接口分别被维护一个引用计数意味着,客户应该对它将要使用的那个指针调用AddRef,而不是其他什么指针。”