Purify は、 OUT パラメータとしてVT_RECORDに設定された VT を持つバリアントを返すときに、ole32.dll でメモリ リークを指摘しています。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
ありがとう
ピカロ・デ・ヴォシオ