vc备忘:COM字符串

Posted by 妖刀 5 January, 2008

一、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参数,内部会为该字符串分配内存,需要调用者释放。

Categories : 技术 / 设计 Tags :

Comments

No comments yet.


Leave a comment

(required)

(required)