Comment renvoyer une variante [out] avec vt = vt_record sans créer une fuite de mémoire dans ole32.dll?

StackOverflow https://stackoverflow.com/questions/3031564

Question

Purify pointe la fuite de mémoire dans ole32.dll lors du retour d'un Une variante avec VT réglé sur Vt_record comme Paramètre. j'utilise Marshalling utilisateur en générant une DLL proxy / stub à partir d'IDL. Pouvez-vous suggérer comment éviter cette fuite de mémoire?

Structure définie en idl:

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

Encapsulation de la structure en variante:

J'alloue la mémoire aux structures à l'aide de CotaskMemalloc et de le résumer en variante comme suit:

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

Merci

Picaro de Vosio

Était-ce utile?

La solution

Il y a des limites à l'appui de vt_record. Essayez de vérifier avec http://vcfaq.mvps.org/com/4.htm, pourrait aider.

Il peut également être plus utile si vous décrivez votre cas plus en détail (pièces IDL connexes, version COMPILER et code décrivant la communication client / serveur qui purifient les suspects comme des fuites)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top