3

我正在查看 WinRT 的一些 Direct3D 代码,并注意到那里的“参考类”使用“ ComPtr<ID3D11Device1>”而不是“ ID3D11Device1*”。所以我的问题是你必须在“ref class”中使用“ComPtr”还是可以使用“native pointer”来代替?

现在我在 ref 类中使用本机指针,因为我的 c++ 文件也用于编译托管 C++。但有时我在 WinRT 中会出现奇怪的行为,并认为这可能与 ComPtr 有关。

4

1 回答 1

4

它不是必须使用,但通常非常方便。

它是管理 COM 对象生命周期的 COM 对象的引用计数智能指针。如果您使用原始指针,您通常无法保证 COM 对象仍然存在。如果您认为这可能与您的问题有关(例如,您在调用 COM 方法时遇到访问冲突),那么使用它们是有意义的。无论如何,与 COM 方法调用相比,引用计数的性能损失算不了什么。

于 2012-09-23T11:38:21.753 回答