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()

阅读更多
文章标签: null
个人分类: VC++
想对作者说点什么? 我来说一句

O&O Defrag 19.5 注册码

2016年06月18日 56B 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭