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

C++ Discussion :

Allocation et désalloation de tableau multiple


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut Allocation et désalloation de tableau multiple
    Bonjour,


    Voila j'ai un petit probleme de desallocation.

    j'ai un fenetre qui lorsque l'utilisateur clique sur un bouton, cela fait appel a des fonctions et dont l'une d'elle a travail avec un tableau de TComposant (TComposant est une classe que j'ai créer).

    j'alloue ce tableau de TComposant sdynamiquement comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mpComposants = new TComposant*[mNbComposants];
    Puis à chaque nouvelle case du tableau je crée un TComposant dynamique comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mpComposants[nbcomposants] = new TComposant;
    Jusqu'ici pas de probleme, du moins je crois

    Mais voila mon probleme.
    Si dans l'ensemble des fonctions que mon bouton appelle il y a une erreur mon programme affiche cette erreur et reviens a la fenetre de depart.

    j'ai alors un tableau alloué dynamiquement ansi que quelques TComposant.

    L'utilisateur reclique sur le bouton, alors le programme va reallouer le teableau et les TComposant.

    Je delete le tableau et les TComposant seulement quand je reussi et que je quitte la fenetre.

    Je pensais faire un test comme suit, allouer de la memoire au premier clique et desalouer puis realouer de nouveau si il y a eu un bug.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      if(mpComposants == NULL)
      {
        mpComposants = new TComposant*[mNbComposants];
      }
      else
      {
        for (int i=0; i < mNbComposants; i++)
          delete mpComposants[i];
        delete[] mpComposants;
        mpComposants = new TComposant*[mNbComposants];
      }
    Mais ca ne fonctionne pas.

    J'espere que j'ai été clair.

    En gros, comment tester si un tableau a deja été allouer ou nom ?


    Merci d'avance,

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    un vecteur de vecteur ca serai pas plus simple ?
    Car tout gérer à la main c'est bon en C.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    un vecteur de vecteur ca serai pas plus simple ?
    Car tout gérer à la main c'est bon en C.

    j'ai entendu parler de ça ! mais j'avoue que j'y connais rien et que j'ai commencé à gérer mes allocations comme ça ... mais si c'est pas difficile à faire peut etre pouvez vous me conseillez un tutoriel ?

    merci

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    La classe sd::vector fait partie de la STL, pourquoi s'en privé !
    Renseigne toi sur dessue (google powa !! ) et post ici su tu n'arrive pas à t'en servir.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

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

Discussions similaires

  1. allocation progressive d'un tableau
    Par youp_db dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 24/10/2006, 11h23
  2. Réponses: 11
    Dernier message: 20/10/2006, 13h19
  3. Réponses: 13
    Dernier message: 01/10/2006, 00h25
  4. [PRO*C] Allocation dynamique d'un tableau de VARCHAR
    Par NéalZheimer dans le forum Interfaces de programmation
    Réponses: 5
    Dernier message: 07/07/2006, 13h02
  5. Limite Allocation Mémoire d'un tableau d'entier
    Par l9ft b9hind dans le forum C++
    Réponses: 5
    Dernier message: 27/10/2005, 19h29

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