繁体   English   中英

了解CComBSTR赋值运算符

[英]Understanding CComBSTR assignment operators

说我有以下内容:

BSTR myBSTR = SysAllocString( L"MYBSTR" );
CComBSTR myCComBSTR = myBSTR;

是否myCComBSTR采取的所有权myBSTR和免费当它超出范围? 或者,如果我不释放myBSTR ,它会复制myBSTR并产生内存泄漏吗?

如果这会产生内存泄漏,那么处理此问题的最有效方法是什么? myBSTR将作为BSTR传递给函数,我想在内部将其存储为CComBSTR

在这种情况下, CComBSTR实例创建一个独立的副本。 您需要手动释放myBSTR以避免泄漏。

修复此场景的最简单方法是跳过中间人SysAllocString函数

CComBSTR myCComBSTR = L"MYBSTR";

另一方面,如果你有一个BSTR并想让CComBSTR取得它的所有者,那么使用attach方法。 此方法将资源的所有权从源BSTR转移到CComBSTR实例。

CComBSTR myCComBSTR;
myCComBSTR.Attach(myBSTR);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM