1

Purify 指向 ole32.dll 中的内存泄漏,同时返回VT 设置为VT_RECORD作为OUT 参数的Variant。我通过从 IDL 生成代理/存根 dll 来使用用户编组。你能建议如何避免这种内存泄漏吗?

IDL 中定义的结构:

{
BSTR m_sFirst;
BSTR m_sSecond;
VARIANT m_vChildStruct; //This member encapsulate a sub structure 
SAFEARRAY __RPC_FAR * m_saArray;
}CustomINFO;

结构在变体中的封装:

我正在使用 CoTaskMemAlloc 为结构分配内存并将其封装在 Variant 中,如下所示:

vV->vt = VT_RECORD;
vV->pvRecord = pStruct; //Pointer of sturct
vV->pRecInfo = pRI; //RecordInfo Interface

谢谢

皮卡罗·德·沃西奥

4

1 回答 1

1

支持 VT_RECORD 存在限制。尝试使用http://vcfaq.mvps.org/com/4.htm检查,可能会有所帮助。

如果您更详细地描述您的案例(相关的 IDL 部分、编译器版本和描述 Purify 怀疑泄漏的客户端/服务器通信的代码),这也可能会更有帮助

于 2010-06-13T09:19:16.757 回答