有谁可以解释上面提到的类型和一些样本用法之间的区别,以清楚地解释两者之间的区别?
任何帮助都将受到高度赞赏! 注意:此问题是this other question
的衍生产品答案 0 :(得分:21)
BSTR是与COM一起使用的字符串数据类型。
_bstr_t是一个类似于智能指针的包装类,因此当变量被销毁或超出范围时,它将释放分配的内存。 _bstr_t也有引用计数,每次通过值传递_bstr_t变量(避免不必要的复制)时都会增加,并在不再使用时递减。每当所有引用都被销毁时,就会释放为该字符串分配的内存。
BSTR的替代方案是CComBSTR。它还管理BSTR的内存,但没有引用计数。
答案 1 :(得分:13)
BSTR 是一个原始指针,而 _bstr_t
是一个封装该指针的类。
与 char * 与 std :: string 的区别相同。
答案 2 :(得分:10)
_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