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