[英]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.