22

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

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

4

3 回答 3

27

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

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

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

于 2008-12-05T11:40:36.890 回答
15

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

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

于 2008-12-04T17:57:40.063 回答
11

_bstr_t 包装 BSTR 类型。因此,当您实例化一个 _bstr_t 时,您也在创建 BSTR。_bstr_t 简单地为您包装所有内容,并且对 BSTR 来说有点像“智能 ptr”。

BSTR

http://msdn.microsoft.com/en-us/library/ms221069.aspx

SysAllocString()

http://msdn.microsoft.com/en-us/library/ms891285.aspx

_bstr_t

https://msdn.microsoft.com/en-us/library/zthfhkd6.aspx

于 2008-12-04T17:57:06.663 回答