2009-10-04 72 views
0

IDXGIObject有一個函數來獲取指向其父代GetParent的指針。不幸的是,文檔沒有說我是否必須在返回的接口上調用Release() - 在調試/發佈(即沒有崩潰)中調用或不調用它都可以正常工作,但我不知道是應該發佈還是而不是。任何想法如何這應該工作?IDXGIObject :: GetParent和Release

回答

1

是的,GetParent()爲返回的對象添加一個引用,所以你需要在它們上調用Release()。

1

來自MSDN docs「如果返回的數據是指向由IDXGIObject :: SetPrivateDataInterface事先設置的IUnknown或其派生類之一的指針,則必須在指針指向指針前調用:: Release()可以減少參考計數。「

我會建議調用release。

+0

這是GetPrivateData,而不是GetParent - 我想知道是否同樣適用於GetParent。 – Anteru 2009-10-04 13:15:58

+1

COM的約定是調用者總是釋放返回的數據。我在這裏寫了:http://www.winwonk.com/writing/commemory/。現在,DirectX可能不允許跨進程調用,所以我不確定他們是否出於性能原因而玩所有權。但是,在這種情況下不調用'Release'應該會產生內存泄漏。 – 2009-10-05 05:48:32