Fuite de mémoire

pozzato58 Messages postés 2 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 28 mars 2008 - 27 mars 2008 à 16:44
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 28 mars 2008 à 18:31
Bonjour,
J'ai un petit souci de fuite de mémoire.
Le debbuger m'indique :

Detected memory leaks!
Dumping objects ->
{103} client block at 0x003E7EE0, subtype c0, 216 bytes long.
a CDialog object at $003E7EE0, 216 bytes long
Object dump complete.

J'ai trouvé de qu'elle fenêtre vient le problème mais je n'ai pas réussi à le résoudre

En faite j'ai une fenetre principale où j'ai un bouton pour ouvrir une fenêtre fille avec l'instruction suivante :

MyFenetreAnalyse = new CFenetreAnalyse(this);
MyFenetreAnalyse->Create(IDD_FENETREANALYSE_DIALOG,this);
HFenetreAnalyse = MyFenetreAnalyse->m_hWnd;
FenetreAnalyse = TRUE;
MyFenetreAnalyse->ShowWindow(TRUE);

Puis sur la fenetre fille j'ai un bouton quitter ou je désalloue tout les éléments de la classe :

CHeartLearningDlg * MyFenetrePrincipale = new CHeartLearningDlg();
MyFenetrePrincipale = (CHeartLearningDlg *) this->GetParent();
MyFenetrePrincipale->SetFenetreAnalyse(FALSE);
this->DestroyWindow();
delete this;

J'ai recherché un moment la mémoire que je ne libère pas et en faite l'adresse de la fuite est lié au this ci-dessus car l'adresse est :
this : 0x003E7CA0 alors que la fuite est indiqué en 0x003E7EE0

J'ai donc inclus un delete this lorsque je détruit mas fenetre mais le résultat est identique

Si vous pouviez m'aider svp

<!-- / message -->

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
27 mars 2008 à 21:36
"l'adresse de la fuite est lié au this ci-dessus"

Ben non justement, il faudrait que ce soit la même adresse

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 mars 2008 à 11:23
Ou une adresse proche, ce qui n'est pas le cas.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 mars 2008 à 11:27
C'est quoi le gestionnaire mémoire qui te fournit les fuites mémoires ?
Tu peux peut etre remodifier l'opérateur new/delete pour demander d'afficher la ligne de l'allocation.
0
pozzato58 Messages postés 2 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 28 mars 2008
28 mars 2008 à 14:56
this : 0x003E7CA0 alors que la fuite est indiqué en 0x003E7EE0

{103} client block at 0x003E7EE0, subtype c0,

Après avoir lu ces lignes, je pensais que les deux adresses étaient liées?

Sinon j'utilise tout ce qui est par défaut dans visual studio.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 mars 2008 à 17:33
Peut etre, mais il s'agit d'une grosse classe alors.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
28 mars 2008 à 18:31
C'est pas compliqué, tu regardes sizeof(TaClasse) et tu regardes si c'est dedans. Mais dans tous les cas c'est pas l'objet lui-même qui n'est pas bien libéré, mais un des attributs de ta classe (sinon ca serait la même adresse pour this et pour la zone non libérée)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0