Fuite de mémoire

Signaler
Messages postés
2
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
28 mars 2008
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
"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
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Ou une adresse proche, ce qui n'est pas le cas.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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.
Messages postés
2
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
28 mars 2008

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.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Peut etre, mais il s'agit d'une grosse classe alors.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
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