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