有谁能解释一下上面提到的类型和一些示例用法之间的区别,以清楚地解释这两者之间的区别?
任何帮助都将不胜感激!注意:这个问题是从this other question衍生出来的
发布于 2008-12-05 11:40:37
BSTR是COM使用的字符串数据类型。
_bstr_t是一个包装类,其工作方式类似于智能指针,因此当变量被销毁或超出作用域时,它将释放已分配的内存。_bstr_t还有引用计数功能,每次通过值传递_bstr_t变量时,引用计数都会增加(避免不必要的复制),当不再使用时,引用计数会递减。只要所有引用都被销毁,为字符串分配的内存就会被释放。
BSTR的一个替代方案是CComBSTR。它还管理BSTR的内存,但没有引用计数。
发布于 2008-12-04 17:57:40
BSTR是一个原始指针,而_bstr_t是一个封装该指针的类。
这与char*和std::string的区别是一样的。
发布于 2008-12-04 17:57:07
_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://stackoverflow.com/questions/341462
复制相似问题