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 :

Allocation - Libération de mémoire


Sujet :

MFC

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut Allocation - Libération de mémoire
    Bonjour,

    J'aimerais savoir si à la fermeture d'une boite de dialogue ( appelée par CDialog::OnOk ), les variables et objets allouées dynamiquement sont supprimés automatiquement ( par le destructeur par défaut - ~CObject - par exemple ou tout autre mécanisme interne aux MFC ) ou si il faut les libérer " à la main ".

    Merci de vos réponses.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    si tu fais un new il faut faire un delete.
    En C++ il n'y a pas de ramasse miette mémoire comme en C++/CLI.

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Ok!

    Et en revanche, tous les objets & variables alloués dynamiquement pendant l'exécution du processus, sont supprimés à la fin du processus puisque alloués dans son espace d'adressage, non ?


  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut
    Salut,

    Comme le dit Farscape, Non.
    S'ils sont crées pas new il faut invoker un delete sur chacun d'eux.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Tout ce qui est dans l'espace d'adressage n'est pas supprimé à la fin du processus ?
    Est-ce qu'il existe un moyen en phase de debogage de connaître tous les objets et variables qui n'ont pas été "deleté" ?

    Merci d'avance.

  6. #6
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Quand tu termines ton programme, si pour un new il manque un delete, tu auras une fuite mémoire affichée dans la fenêtre de sortie de visual.
    Pour savoir d'où elles viennent, à la place d'un new tu mets DEBUG_NEW (il faut que tu sois en debug). Tu auras alors le fichier et la ligne en face de ta fuite mémoire.

Discussions similaires

  1. Réponses: 17
    Dernier message: 10/04/2013, 18h46
  2. [Debutant(e)]problème de libération de mémoire
    Par skywalker3 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/02/2005, 17h38
  3. [VC++/ASM] Allocation dynamique de mémoire ?
    Par Magus (Dave) dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 21/12/2004, 15h05
  4. Réponses: 25
    Dernier message: 16/07/2003, 20h41
  5. Allocation dynamique de mémoire en asm
    Par narmataru dans le forum Assembleur
    Réponses: 7
    Dernier message: 17/12/2002, 22h31

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