gpt4 book ai didi

c++ - 了解 CComBSTR 赋值运算符

转载 作者:可可西里 更新时间:2023-11-01 18:26:57 25 4
gpt4 key购买 nike

假设我有以下内容:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com