IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Fuite de mémoire


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut Fuite de mémoire
    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

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut

    Code de la fuite : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CHeartLearningDlg * MyFenetrePrincipale = new CHeartLearningDlg();
    MyFenetrePrincipale = (CHeartLearningDlg *) this->GetParent();
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Par défaut
    Perdu

    Désolé pour les balises.

    Sinon la fuite de mémoire ne provient pas de ses deux lignes.
    L'adresse du pointeur ne correpond pas à la fuite mais merci pour la suggestion.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    Explique-moi comment ces deux lignes ne font pas une fuite mémoire, alors que tu alloues un nouvel objet de type CHeartLearningDlg avant d'écraser le seul pointeur connaissant sont adresse pour en écrire une autre à la place...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. fuite de mémoire ?
    Par salseropom dans le forum C
    Réponses: 2
    Dernier message: 12/01/2006, 16h19
  2. Réponses: 1
    Dernier message: 02/12/2005, 14h18
  3. fuite de mémoire
    Par mamag dans le forum MFC
    Réponses: 17
    Dernier message: 19/08/2005, 10h42
  4. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 20h44
  5. Réponses: 8
    Dernier message: 17/10/2002, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo