2009-10-04 69 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