神一样规则:addref和release规则(com本质论读书笔记1)

本文详细阐述了在COM编程中何时需要调用addref和release方法来管理接口指针的引用计数,包括在赋值给局部变量、作为函数参数、函数返回值等场景下的一系列具体操作规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求调用addref方法的情形:
A1.当把一个非空接口指针写到局部变量中时.
A2.当被调用方把一个非空接口指针写到方法或者函数的[out]或者[in,out]参数中时.
A3.当被调用房返回一个非空接口指针作为函数的实际结果时.
A4.当把一个非空接口指针写到对象的一个数据成员中时.
下面是一些比较通用的,要求调用release方法的情形:
R1.在改写一个非空局部变量或者数据成员之前.
R2.在离开非空局部变量的作用域(scope)之前.
R3.当被调用方要改写方法或者函数的[in,out]参数,并且参数的初始值为非空时,注意,[out]参数往往被假定"输入时为空值",所以被调用方永远也不必释放[out]参数.
R4.在改写一个对象的非空数据成员之前.
R5.在离开一个对象的析构函数之前,并且这时还有一个非空接口指针作为数据成员.
   还有一种很常见的特殊情况是,当把接口指针作为[in]参数传给函数时,可以适用前面给出的第3条关于特殊知识的规则:
S1.当调用方把一个非空接口指针通过[in]参数传给一个函数或者方法时,既不需要调用addref,也不需要调用release,因为在调用堆栈中,临时变量的生命周期只是"用于初始化形式参数"的表达式的生命周期的一个子集.
 
 
 
 
 
 
 
还有我同学老杨找到工作了,祝他工作顺利,什么鸟公司,vb开发短信增值业务.
晕到.
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值