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

Qt Discussion :

Gestionnaire de mémoire et Qt


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut Gestionnaire de mémoire et Qt
    Bonjour à tous,


    A chaque projet, j'utilise un gestionnaire de mémoire pour lever les inattentions que l'on fait tous concernant les allocations mémoires.

    Ce gestionnaire est classique, un include en dernière place des includes pour redéfinir les opérateurs new/delete/new[]/delete[], et un include à la fin du fichier pour le désactiver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include <vector>
    #include "Fichier1.h"
    #include "Fichier2.h"
     
    #include <utils/EnableMemoryManager.h>
     
    CMaClass::CMaClass()
    {
     
    }
     
    CMaClass::Fonction1()
    {
     
    }
     
    CMaClass::Fonction2()
    {
     
    }
     
    #include <utils/DisableMemoryManager.h>
    Le soucis c'est qu'avec Qt, comme on alloue mais qu'on laisse le moteur libérer la mémoire, il ne faut pas compter les "new" effectués pour l'IHM.

    Plus inquiétant, comment s'assurer qu'on a pas fait de new pour l'IHM mais en oubliant de connecter un parent et qui ne sera donc pas détruit par le moteur ?

    A mon avis le mieux serai de faire des delete sur les composants graphique, même si Qt le gère tout seul (Qt détecte si on fait un delete pour ne pas qu'il en refasse un derrière)


    Vous en pensez quoi ?


    A bientôt

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Je ne sais pas trop quoi pensé...
    Par contre, tu peut aussi utilisé Qt::WA_DeleteOnClose
    http://qt.developpez.com/doc/4.4/qt/...attribute-enum

  3. #3
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    salut,

    pourquoi n'utilises-tu pas des outils déjà tout faits comme le module memcheck de valgrind (ou autre, bien sûr) ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Ha je connais pas ça, je voyais ces outils comme de gros logiciels commerciaux de tests...

    Je regarde la doc voir comment ça s'utilise, si ça s'intègre à VS2005 etc...


    Tu en as d'autres ? Histoire de comparer ?


    Merci beaucoup

    A bientôt

  5. #5
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Pour ma part, je delete systématiquement tout widget, dialog... que j'ai crée avec un new. Alors je ne sais pas si QT gere ou non les destructions mais ca n'a pas l'air de planter dans mes projets.

  6. #6
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    D'après la doc (mais on s'en serait douté) Qt delete tous les fils avant leur parent :

    QWidget::~QWidget ()
    Destroys the widget.
    All this widget's children are deleted first. The application exits if this widget is the main widget.

Discussions similaires

  1. Conflit entre mon gestionnaire de mémoire et afxmem
    Par mister3957 dans le forum C++
    Réponses: 9
    Dernier message: 30/06/2008, 12h52
  2. Réponses: 4
    Dernier message: 02/06/2008, 20h12
  3. Réponses: 10
    Dernier message: 20/08/2007, 10h47
  4. gestionnaire de mémoire en c
    Par kagemusha dans le forum C
    Réponses: 13
    Dernier message: 14/10/2006, 11h06
  5. Réponses: 1
    Dernier message: 27/06/2006, 20h28

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