CSDN博客

img hahu

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

发表于2004/7/11 3:53:00  1364人阅读

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

相关博文

我的热门文章

img
取 消
img