《COM本质论》第二章学习(2)
来源:互联网 发布:百度知道问答软件 编辑:程序博客网 时间:2024/04/29 20:06
COM规范的引用计数规则为三个公理:
1、当一个非空接口指针从一个内存位置被拷贝到另外一个内存位置时,应该要调用AddRef,以便通知对象又有附加的引用发生。
2、对于已经包含非空接口指针的内存位置来说,在重写该内存位置之前必须先调用Release,以便通知对象这个引用已经被销毁。
3、如果你对两个或者多个内存位置之间的关系有特殊的理解的话,那么多余的AddRef和Release调用可以被优化掉。
从这三个公理,归结出:
调用AddRef方法的情形:
1、当把一个非空接口指针写到局部变量中时。
2、当被调用方把一个非空接口指针写到方法或者函数的[out]或者[in,out]参数中时。
3、当被调用方返回一个非空接口指针作为函数的实际结果时。。
4、当把一个非空接口指针写到对象的一个数据成员中时。
调用Release方法的情形:
1、在改写一个非空局部变量或者数据成员之前。
2、在离开非空局部变量的作用域之前。
3、当被调用方要改写方法或者函数的[in,out]参数,并且参数的初始值为非空时。(如果参数的初始值为空,则不需要释放,一般假定[out]参数输入时为空,所以[out]参数不要释放。)
4、在改写一个对象的非空数据成员之前。
5、在离开一个对象的析构函数之前,并且这时还有一个非空接口指针作为数据成员。
例外:
当调用方把一个非空接口指针通过[in]参数传递给一个函数或者方法时,既不需要调用AddRef也不需要调用Release。
- 《COM本质论》第二章学习(2)
- 《COM本质论》第二章学习(1)
- 《COM本质论》第一章学习(2)
- COM本质论---第二章 接口
- 《COM本质论》第三章学习(1)
- 《COM本质论》第四章学习(1)
- COM本质论学习日志(2)--12.31
- 《COM本质论》第一章学习(1)
- 《COM本质论》第一章学习(3)
- 《COM本质论》第一章学习(4)
- 《COM本质论》学习笔记 (1)
- COM本质论(PDF中文版,非扫描版)- 第二章
- com本质论学习笔记
- com本质论读书笔记(2)
- com本质论读书笔记(2)
- COM本质论学习笔记(一)IDL
- com本质论笔记
- COM本质论 笔记
- CRM下午茶(19)-电子商务中的客户关系管理
- OTA图片短信格式介绍
- 《COM本质论》第二章学习(1)
- ObjectInputStream类和ObjectInputStream类的使用
- vim 配置文件
- 《COM本质论》第二章学习(2)
- VIM 一些功能
- 如何处理,ASP.NET中回发或回调参数无效
- MySQL 错误Incorrect key file for table ******.MYI; try to repair it的解决
- 把smarty配置更加详细完善了下,呵呵,发上来了!!
- 早上学习了一个smarty局部刷新的例子发上来大家看看,过两天我会把它与数据库相互结合起来写成功发过来的
- php清除所有缓存与根据ID清楚缓存例子
- 寒冷的夏风
- 风·雨·秋