2014-04-14 95 views
2

美好的一天。COM參考計數

什麼是正確的方式初始化COM接口引用計數?

我看到很多例子,其中參考計數initilialized到,也參見實施例,其中是集。

什麼是diffirence?

+1

想想一個引用計數器*是*一點點,你應該能夠找出零或一個初始化它的區別是什麼。 –

+0

感謝Joachim,我預計如果參考。是1,界面保留在內存中。這是真的?如果是這樣,爲什麼? – user2120666

回答

3

你必須把它當最後Release()被調用的對象需要自己照顧這樣的方式。這通常意味着,當您創建對象時,它必須具有引用計數1,然後才能將對象指針處理爲請求該對象的調用方。無論您初始化引用計數爲零,然後調用AddRef()(你處理的指針到調用者之前)的初始化爲一個不叫AddRef()一般是由你。

1

重要的是,你的COM對象有一個有效引用計數。

如果您創建對象,然後是有意義的開始計數1(因爲對象的一個​​實例剛剛創建)。

您可能需要閱讀this interesting article on COM in plain C

從這篇文章中,你可以閱讀(注意exmaple->count = 1;線):

IExample * example; 

example = (IExample *)GlobalAlloc(GMEM_FIXED, sizeof(IExample)); 
example->count = 1; 
example->buffer[0] = 0; 
+0

謝謝,我讀過這篇文章,但沒有解釋爲什麼要初始化爲一個。 – user2120666

+0

我upvote你的答案。謝謝。 – user2120666

+0

不客氣。 –