CComBSTR, _bstr_t 使用原则
1. 二者都是对BSTR进行操作的智能指针,提供了一些功能来方便地操作BSTR,
CComBSTR 是ATL对BSTR的包装
_bstr_t 是vc 对BSTR的包装
使用二者都可以,
如果考虑到减少组件的大小,那么建议使用CComBSTR ,
如果考虑到功能的方便性, 建议使用 _bstr_t 。
2.
使用 _bstr_t 需要加上如下的头文件:
#include "comdef.h "
#include "comutil.h "
3.
CComBSTR用在服务器端,_bstr_t用在客户端
不过有时候在服务器端用CComBSTR没有错,用_bstr_t就有
4.
_bstr_t会抛出异常,CComBSTR不会
5.
将已初始化的 CComBSTR 的地址作为 [out] 参数传递到函数会导致内存泄漏。
在下面的示例中,在函数 OutString
替换为了保存字符串 "Initialized"
而分配的字符串时,该字符串被泄漏。
若要避免泄漏,请在作为 [out] 参数传递地址之前,对现有的 CComBSTR 对象调用 Empty 方法。
请注意,如果函数的参数是 [in, out],则同样的代码将不会导致泄漏。