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