gpt4 book ai didi

c++ - 手动释放 ComPtr

转载 作者:可可西里 更新时间:2023-11-01 18:06:49 37 4
gpt4 key购买 nike

我正在使用 ComPtr (Microsoft::WRL) 来管理一些 DirectX11 资源。如何手动释放?

如果我理解正确的话,“ReleaseAndGetAddressOf”方法只会释放指针而不是资源本身(返回),我不确定“Reset”方法。

我能想到的唯一替代方法是手动调用指针析构函数,或者在从“ReleaseAndGetAddressOf”获取原始指针后调用“Release”,我想避免这种情况。

最佳答案

提供了 WRL 的源代码,请查看 include/winrt/wrl/client.h。嵌入式 COM 指针(ptr_ 成员)由 InternalRelease() 函数释放。使以下任何一种方式释放指针合适的候选人:

  • 析构函数。使用 ComPtr<>
  • 的原因
  • 分配 nullptr
  • 使用 ReleaseAndGetAddressOf(),绕过很长一段路
  • 调用重置()

因此,分配 nullptr 或调用 Reset() 是一个不错的选择,您可以选择。或者,如果您只想自己管理接口(interface)指针,则根本不要使用它,当然不需要使用 ComPtr。

关于c++ - 手动释放 ComPtr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13418176/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com