recordset->Release() or recordset.Release()?? [2004年6月18日 19:16 ]

recordset->Release() or recordset.Release()??

用"."和”->”到底有什么差别

到现在还没有搞清楚

只是有这样一种直觉,下面的想法未经证实,任何人不要乱用啊!

从_RecordsetPtr的CreateInstance想起,它使用的".",所以”.”是和com对象的创建和销毁是有关系的,而”->”是释放对另外一个已有引用的调用。从com对象的原理来说

当该Ptr使用了AddRef的时候,需要用".",否则用”->”。

.Release()的作用是把com的计数减1,

而->Release()是为了把这个Ptr置空,并不减少计数。真的是这样吗?在用MSXML的时候似乎不是这样,调用会出错,好像就是在msxml中好像是如果Ptr不为NULL,到最后(销毁??)会自动调用Release()而引起出错。

Com中的计数真是好麻烦,释放了不该释放的,会引起其他地方调用错误,不释放,计数错误,com的调用又不能释放空间。有空找找看

回复: recordset->Release() or recordset.Release()?? 2004-6-19 10:16 carfield

.是调用的智能指针的release

->调用的是IUknown的Relese

一般来讲 不要调 ->Release()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值