vc备忘:COM字符串
一、BSTR
在 C++ 中,一个 BSTR 实际上就是一个指向字符串中第一个字符的指针。
BSTR bstr = NULL;
bstr = SysAllocString ( L"Hi Bob!" );
if ( NULL == bstr )
// out of memory error
// Use bstr here...
SysFreeString ( bstr );
注意,BSTR在使用完毕后必须使用SysFreeString释放,否则会导致内存泄露。
二、CComBSTR
CComBSTR是封装了BSTR的智能指针。在CComBSTR型变量析构时,将自动释放内存。
CComBSTR bs1;
CComBSTR bs2 = "new text";
pStuff->GetText ( &bs1 ); // ok, takes address of internal BSTR
pStuff->SetText ( bs2 ); // ok, calls BSTR converter
三、COM规则,调用者负责释放传出[out]参数的内容。
BSTR bsName = NULL;
pLastNode->get_text(&bsName);//pLastNode为指向结点的指针
//使用bsName的代码(略)
....
//释放bsName字符串占用的内存
SysFreeString(bsName);
get_text的参数是out参数,内部会为该字符串分配内存,需要调用者释放。



Comments
No comments yet.