COM技术内幕第四章笔记-引用计数
2010-07-27 13:17
295 查看
IUnknown的另外两个成员函数AddRef和Release是引用计数的代码实现。
COM组件都会维护一个表示引用计数的数值。
客户取得一个接口时,计数值+1——AddRef,使用完后-1——Release。
为0时,组件可将自己从内存中删除。
关于此有三条简单的规则:
1、在返回之前调用AddRef。对与返回接口指针的函数,在返回之前,用相应的指针调用AddRef。QueryInterface、CreateInstance。这样一来,客户从实现处得到接口后就无需AddRef。
2、使用完接口后Release。
3、赋值后AddRef。例如在将一个接口指针赋值给另外一个接口指针时,后者应调用AddRef。意味着:在给某个接口指定别名时都应调用AddRef。
如果是别名的话,也就没有后者前者的区别了吧?!?!。
“对于客户而言,每个接口分别被维护一个引用计数意味着,客户应该对它将要使用的那个指针调用AddRef,而不是其他什么指针。”
COM组件都会维护一个表示引用计数的数值。
客户取得一个接口时,计数值+1——AddRef,使用完后-1——Release。
为0时,组件可将自己从内存中删除。
关于此有三条简单的规则:
1、在返回之前调用AddRef。对与返回接口指针的函数,在返回之前,用相应的指针调用AddRef。QueryInterface、CreateInstance。这样一来,客户从实现处得到接口后就无需AddRef。
2、使用完接口后Release。
3、赋值后AddRef。例如在将一个接口指针赋值给另外一个接口指针时,后者应调用AddRef。意味着:在给某个接口指定别名时都应调用AddRef。
如果是别名的话,也就没有后者前者的区别了吧?!?!。
“对于客户而言,每个接口分别被维护一个引用计数意味着,客户应该对它将要使用的那个指针调用AddRef,而不是其他什么指针。”
相关文章推荐
- COM技术内幕--引用计数及动态链接
- 【转】COM技术内幕(笔记)
- COM笔记-引用计数
- COM技术内幕学习笔记---第七章---类厂
- COM笔记-引用计数
- COM笔记-引用计数
- 包容和聚合(COM技术内幕笔记五)
- COM 学习笔记(2)-引用计数
- COM笔记-引用计数
- COM组件的类厂(COM技术内幕笔记之四)
- COM笔记-引用计数
- COM技术内幕学习笔记(2)
- COM技术内幕第九章笔记-编程工作的简化
- COM程序的简单实现(COM技术内幕笔记之一)
- COM笔记-引用计数
- COM技术内幕第三章笔记-接口查询
- COM中的HRESULT, CLISD,ProgID, DLL注册,COM库函数的知识(COM技术内幕笔记之三)
- 包容和聚合(COM技术内幕笔记五)
- COM技术内幕第六章笔记-HRESULT、GUID、注册表及其他
- COM技术内幕(笔记)