假设我有以下内容:
BSTR myBSTR = SysAllocString( L"MYBSTR" );
CComBSTR myCComBSTR = myBSTR;
myCComBSTR
是否取得 myBSTR
的所有权并在超出范围时释放它?或者如果我不释放 myBSTR
,它是否会复制 myBSTR
并产生内存泄漏?
如果这会产生内存泄漏,最有效的处理方法是什么? (myBSTR
将作为 BSTR
传递给函数,我想将其存储为 CComBSTR
内部)
最佳答案
在这种情况下,CComBSTR
实例创建一个独立的拷贝。您将需要手动释放 myBSTR
以避免泄漏。
解决这种情况的最简单方法是跳过中间人 SysAllocString
函数
CComBSTR myCComBSTR = L"MYBSTR";
另一方面,如果您有一个 BSTR
并且想要一个 CComBSTR
取得它的所有权,那么请使用附加方法。此方法将资源的所有权从源 BSTR
转移到 CComBSTR
实例。
CComBSTR myCComBSTR;
myCComBSTR.Attach(myBSTR);
关于c++ - 了解 CComBSTR 赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3559990/