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

Discussion :

Fuite de mémoire à la fermeture des fenêtres

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    fdghg
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fdghg
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut Fuite de mémoire à la fermeture des fenêtres
    Bonjour à tous

    Je vais vous montrer un code très simple

    main.cpp

    FenPrincipale.h

    FenPrincipale.cpp

    FenFille.h

    FenFille.cpp

    Nous avons donc une fenêtre FenPrincipale, que je vais appeler f1
    Ainsi que FenFille que je vais appeler f2

    Pourquoi quand je ferme f2 a mémoire ne diminue pas ?
    (donc -> préalablement ouvert avec le this de f1, envoyer au constructeur de f2.)


    Car j'ai ouïe dire que

    Qt s'occupe automatiquement de gérer les allocations de mémoire quand on leur envoie un parent ?

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Donc c'est la suite de la question ici.

    Je retourne la question, pourquoi est-ce que de la mémoire se libérerait à la fermeture d'une fenêtre ? open/close sur un objet QWidget n'a pas à décider de la destruction de l'objet.

    Sauf si vous rajoutez, dans le constructeur de FenFille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setAttribute( Qt::WA_DeleteOnClose );

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Comment sais-tu que la mémoire n'est pas libérée ?

  4. #4
    Membre actif
    Homme Profil pro
    fdghg
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fdghg
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut
    Avec le moniteur de ressource Windows, la mémoire monte, monte
    à chaque ouverture de fenêtre ça monte toujours du même nombre d'octets (un peu normal) mais la fermeture de la fenêtre ne la fait pas diminuer

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 173
    Billets dans le blog
    155
    Par défaut
    Bonjour,

    J'ai personnellement envie de dire que cela n'est pas une bonne façon de voir s'il y a fuite.

    Mais bon.

    En supposant que vous avez réellement fait une erreur, il faut regarder dans la liste de processus, pour voir si après "fermeture de votre programme" votre programme est présent dans cette liste. Si oui, alors le programme n'a pas été fermé (juste caché).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre actif
    Homme Profil pro
    fdghg
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fdghg
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut
    Je n’ai jamais dit sa
    Mon programme est encore ouvert puisque ma FenPrincipale est visible
    C'est juste que je cherche la meilleure méthode pour supprimer de la mémoire mes fenêtres fille quand je l'ai close()

    setAttribute( Qt::WA_DeleteOnClose );
    le fait très bien
    Après y'a peut être un autre moyen si j'implémente closeEvent();

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par nostrora Voir le message
    Avec le moniteur de ressource Windows, la mémoire monte, monte
    à chaque ouverture de fenêtre ça monte toujours du même nombre d'octets (un peu normal) mais la fermeture de la fenêtre ne la fait pas diminuer
    Le moniteur de ressource n'est pas forcément pertinent car l'O.S. peut ne pas libérer les ressources associées à ton processus s'il n'en n'a pas besoin. Cela joue le rôle de cache de ressources rapidement disponibles pour le processus.

    Travail d'abord sur ton programme et son design. Valide avec des testsU et modulaires. Ensuite, pour avoir une info fine, utilise un outil dédie (type Valigrind par expl).

Discussions similaires

  1. Fermeture des fenêtres
    Par Feiloo dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 16/04/2011, 21h11
  2. Fermeture des fenêtres
    Par IAGISG dans le forum Débuter
    Réponses: 2
    Dernier message: 03/02/2011, 12h25
  3. Réponses: 1
    Dernier message: 14/06/2010, 17h24
  4. Fermeture des fenêtres
    Par ValWatt dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/08/2007, 16h52
  5. Détection des fuites de mémoire
    Par yobbas dans le forum C
    Réponses: 9
    Dernier message: 14/06/2006, 17h48

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