Purify指向ole32.dll中的内存泄漏,同时返回 Variant ,VT设置为 VT_RECORD 为 OUT参数。我通过从IDL生成代理/存根dll来使用用户编组。 你能建议如何避免这种内存泄漏吗?
在IDL中定义的结构:
{
BSTR m_sFirst;
BSTR m_sSecond;
VARIANT m_vChildStruct; //This member encapsulate a sub structure
SAFEARRAY __RPC_FAR * m_saArray;
}CustomINFO;
变体中struct的封装:
我使用CoTaskMemAlloc为结构分配内存并将其封装在Variant中,如下所示:
vV->vt = VT_RECORD;
vV->pvRecord = pStruct; //Pointer of sturct
vV->pRecInfo = pRI; //RecordInfo Interface
由于
Picaro De Vosio
答案 0 :(得分:1)
支持VT_RECORD存在限制。 尝试使用http://vcfaq.mvps.org/com/4.htm查看,可能会有帮助。
如果您更详细地描述您的案例(相关的IDL部分,commpiler版本和描述客户端/服务器通信的代码,其中Purify怀疑泄漏),这可能会更有帮助。