Comment renvoyer une variante [out] avec vt = vt_record sans créer une fuite de mémoire dans ole32.dll?
-
27-09-2019 - |
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
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)