BSTR 和 _bstr_t 有什么区别?

新手上路,请多包涵

任何人都可以解释上述类型之间的区别和一些示例用法以清楚地解释两者之间的区别吗?

任何帮助将不胜感激!注意:这个问题是从 另一个问题 衍生而来的

原文由 JohnIdol 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

BSTR 是与 COM 一起使用的字符串数据类型。

_bstr_t 是一个像智能指针一样工作的包装类,所以它会在变量被销毁或超出范围时释放分配的内存。 _bstr_t 也有引用计数,每次通过 _bstr_t 按值变量(避免不必要的复制)并在不再使用时减少。每当销毁所有引用时,都会释放为字符串分配的内存。

BSTR 的替代品是 CComBSTR 。它还管理 BSTR 的内存,但没有引用计数。

原文由 Khalid Salomão 发布,翻译遵循 CC BY-SA 4.0 许可协议

BSTR 是一个原始指针,而 _bstr_t 是一个封装该指针的类。

这与 char*std::string 的区别相同。

原文由 efotinis 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题