Com IDXGIObject::GetParent和Release

Com IDXGIObject::GetParent和Release,com,dxgi,Com,Dxgi,IDXGIObject具有获取指向其父对象的指针的函数。不幸的是,文档没有说明我是否必须在返回的接口上调用Release()——调用或不调用它在调试/发布中都可以正常工作(也就是说,没有崩溃),但我想知道我是否应该发布。知道这应该如何工作吗?来自“如果返回的数据是指向IUnknown的指针或其派生类之一,以前由IDXGIObject::SetPrivateDataInterface设置,则必须在释放指针以减少引用计数之前对指针调用::Release() 我建议从“如果返回的数据是指向IUnkno

IDXGIObject
具有获取指向其父对象的指针的函数。不幸的是,文档没有说明我是否必须在返回的接口上调用
Release()
——调用或不调用它在调试/发布中都可以正常工作(也就是说,没有崩溃),但我想知道我是否应该发布。知道这应该如何工作吗?

来自“如果返回的数据是指向IUnknown的指针或其派生类之一,以前由IDXGIObject::SetPrivateDataInterface设置,则必须在释放指针以减少引用计数之前对指针调用::Release()

我建议从“如果返回的数据是指向IUnknown或其派生类之一的指针(以前由IDXGIObject::SetPrivateDataInterface设置),则在释放指针以减少引用计数之前,必须对指针调用::release()。”


我建议调用release。

是的,GetParent()会添加对返回对象的引用,因此需要对它们调用release()

是的,GetParent()向返回的对象添加了一个引用,因此需要对它们调用Release()

这是GetPrivateData,而不是GetParent——我想知道GetParent.COM的约定是否也是如此,即调用方总是释放返回的数据。我已经在这里写过了:。现在,DirectX可能不允许跨进程调用,所以我不确定他们是否因为性能原因而对所有权耍花招。但是,在这种情况下,不调用
Release
应该会产生内存泄漏。这是GetPrivateData,而不是GetParent——我想知道GetParent.COM的约定是否也是如此,即调用方总是释放返回的数据。我已经在这里写过了:。现在,DirectX可能不允许跨进程调用,所以我不确定他们是否因为性能原因而对所有权耍花招。但是,在这种情况下,不调用
Release
会导致内存泄漏。