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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章