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 :

Libération d'un triple pointeur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 75
    Par défaut Libération d'un triple pointeur
    Bonjour, voilà j'ai un problème de désallocation pour triple pointeur!
    Le code suivant marche sur 9 élément sur 10 et il bloque toujours au même, ou il y a un autre pb ou c'est ma désallocation qui cloche. Je met donc ci dessous l'allocation et la désallocation d'un des éléments pour savoir si vous pouvez me dire ce que je fais mal:

    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
     
    // Allocation
    QPushButton ***b = NULL;
    b = new QPushButton **[100];
    for(k=0;k<100;k++){
         b[k] = new QPushButton *[20];
         for(l = 0;l<20;l++){
            b[k][l] = new QPushButton[10];
         }
    }
    ...
    //Libération
    for(k=0;k<100;k++){
         for(l=0;l<20;l++){
              delete(b[k][l]);
         }
    }
     
    for(k=0;k<100;k++){
         delete(b[k]);
    }
     
    delete(b);
    Voilà si quelqu'un saurait m'aider...(à mon avis je dois bien déconner avec les delete...j'ai utilisé delete au lieu de delete[] dans le code ca n'a pas d'importance si?)

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 776
    Par défaut


    Pourquoi t'occuper de supprimer tes boutons ? Si tu les ajoutes en tant qu'enfants d'une fenêtre, elle s'occupera de tout, notamment de leur mise en bière le temps venu et du transport jusqu'au cimetière, sans que tu ne doives utiliser le mot-clé delete et sans surcoût inutile.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 75
    Par défaut
    Salut,
    mais quel idiot! je me suis fait cette réflexion pour les autres et pas pour ceux-là, je m'imaginais que cela ne marchait pas pour les triple pointeurs! ok autant pour moi je m'en vais avec ma question stupide ^^. merci chef!

  4. #4
    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,

    À la place de triple pointeur est autre monstruosité, je conseille d'utiliser des QList ou autre conteneur assez intelligent.
    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.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 75
    Par défaut
    Ok j'y penserais la prochaine fois mais là ca ne s'y prêtait pas trop vu que la fenêtre est organisée en tableau de bord, j'avais donc besoin de widget en (k, l) pour les groupbox correspondantes, et pour s'y repérer avec l'affichage en tps réel derrière c'est quand même pratique d'avoir des positions bien identifiables! merci

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Je confirme, c'est super moche, pas étonnant que tu aies des problèmes si tu t'amuses à faire du code sale...
    Plutôt que de corriger la prochaine fois (que tu ne feras pas, par habitude), prend le temps de corriger tout de suite, ça t'apprendra à programmer correctement et ça te facilitera la maintenance du code.

    Dans cette situation, une simple classe collection avec un accesseur operator()(i, j, k) est plus efficace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class PushButtonCollection {
        QVector<QPushButton*> buttons;
        int width, height, depth;
     
    public:
        PushButtonCollection(int w, int h, int d, QWidget* parent = 0) : 
            buttons(w*h*d), width(w), height(h), depth(d) {
            for (int i=0; i<w*h*d; ++i) { buttons[i] = new QPushButton(parent);
        }
     
        QPushButton* operator() (int i, int j, int k) { return buttons[i+width*(j+height*k)]; }
     
        // etc.
    };

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage par adresse d'un triple pointeur
    Par garbage.collector dans le forum C++
    Réponses: 6
    Dernier message: 14/11/2013, 16h55
  2. Libération mémoire; différents pointeurs
    Par icer dans le forum Débuter
    Réponses: 11
    Dernier message: 12/12/2007, 19h35
  3. Réponses: 6
    Dernier message: 07/07/2007, 19h12
  4. Réponses: 9
    Dernier message: 19/12/2005, 17h41
  5. Libération de pointeurs dans un std::vector
    Par G dans le forum SL & STL
    Réponses: 17
    Dernier message: 06/04/2005, 23h37

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