使用_bstr_t在函数中传递BSTR *类型的参数
这样做的正确方法是什么:
_bstr_t description;
errorInfo->GetDescription( &description.GetBSTR() );
要么:
_bstr_t description;
errorInfo->GetDescription( description.GetAddress() );
其中IError:GetDescription
定义为:
HRESULT GetDescription (BSTR *pbstrDescription);
我知道我可以轻松地做到这一点:
BSTR description= SysAllocString (L"Whateva"));
errorInfo->GetDescription (&description);
SysFreeString (description);
谢谢
没有找到相关结果
已邀请:
3 个回复
镰茧钩
嘘伪
的适当方法取决于
是否会返回你拥有的
,或者引用你不必释放的内存。 这里的目标是最小化副本数量,但也避免在返回的数据上手动调用
。我会修改代码,如图所示澄清:
扑北爱
实现,显然,当在处女
上调用
时,内部
实例创建的
为1。所以你的第一个例子中的
生命周期看起来没问题:
但是如果
是脏的,现有的内部
指针将被覆盖,泄漏它引用的先前内存。 通过使用以下
,可以使用脏
,因为它首先通过
清除。过载还提供了使用地址运算符而不是
的便利性;
因此,您的第一个示例可能如下所示:
此评估基于VS 12.0的
。