我正在使用 ComPtr (Microsoft::WRL) 来管理一些 DirectX11 资源。我怎样才能手动释放它?
如果我理解正确,“ReleaseAndGetAddressOf”方法只会释放指针而不是资源本身(返回),我不确定“重置”方法。
我能想到的唯一选择是手动调用指针析构函数,或者在从“ReleaseAndGetAddressOf”获取原始指针之后调用“Release”,我想避免这种情况。
提供了 WRL 的源代码,请查看 include/winrt/wrl/client.h。嵌入的 COM 指针(ptr_ 成员)由 InternalRelease() 函数释放。使以下任何一种方式释放指针合适的候选人:
因此,分配 nullptr 或调用 Reset() 是一个不错的选择,请自行选择。或者如果您只想自己管理接口指针,则根本不使用它,当然不需要使用ComPtr。
您可以分配一个空指针。