假设我有以下内容:
BSTR myBSTR = SysAllocString( L"MYBSTR" );
CComBSTR myCComBSTR = myBSTR;
Does myCComBSTR
取得所有权myBSTR
当它超出范围时释放它?或者它是否复制了myBSTR
如果我不释放就会产生内存泄漏myBSTR
?
如果这会产生内存泄漏,处理此问题最有效的方法是什么? (myBSTR
将被传递给一个函数作为BSTR
我想将它存储为CComBSTR
内部)
在这种情况下CComBSTR
实例创建一个独立的副本。您需要手动释放myBSTR
以避免泄漏。
解决这种情况的最简单方法是跳过中间人SysAllocString
功能
CComBSTR myCComBSTR = L"MYBSTR";
另一方面,如果你有一个BSTR
并想要有一个CComBSTR
取得它的所有权然后使用附加方法。此方法从源转移资源的所有权BSTR
to the CComBSTR
实例。
CComBSTR myCComBSTR;
myCComBSTR.Attach(myBSTR);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)