1

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

ありがとう

ピカロ・デ・ヴォシオ

4

1 に答える 1

1

VT_RECORDのサポートには制限があります。http://vcfaq.mvps.org/com/4.htmで確認してみてください。役立つ場合があります。

また、ケースをより詳細に説明すると役立つ場合があります(関連するIDLパーツ、コンパイラーバージョン、およびPurifyがリークの疑いがあるクライアント/サーバー通信を説明するコード)

于 2010-06-13T09:19:16.757 に答える