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 :

[Debutant]reallocation de memoire d'un tableau de type perso


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Points : 73
    Points
    73
    Par défaut [Debutant]reallocation de memoire d'un tableau de type perso
    Bonjour,

    Dans le logiciel que je developpe je dois utiliser un tableau de pointeur de Atom (etant un type créer par moi) et dont de je connais pas le nombre d'element dont il va etre composé.
    j'aimerai savoir si la methode que je souhaite employé et bonne pour pouvoir faire une reallocation memoire chaque fois que mon tableau change de taille.

    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 Atom{
     
    public :
    ...
       int NbBonds
      Atom **Bonds;
      Atom *suiv;
     
      void addOneBond()
      {
         ++NbBonds;
          Bonds = new (Atom*)[NbBonds];
       };
    avec initialement NbBonds = 0

    j'aiderai avoir votre avis la dessus.

    merci d'avance a tous

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ta méthode n'est pas correcte, car là tu vas avoir une fuite de mémoire (le tableau précédent n'est pas détruit), et tu vas en même temps perdre son contenu.

    Mais heureusement pour toi, la bibliothèque standard du C++ dispose de tout ce qu'il faut pour ce genre de situation, notamment la classe std::vector<> qui fait office de tableau dynamique.

    Tu peux trouver plein de topics traitant de ce sujet sur ce forum, et une documentation sur le site de SGI.

    Que la force soit avec toi

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Bon ben je vais me mettre a vector. Merci

    En fait je suis le 4eme stagiaire a developper ce logiciel et avant Bonds était defini comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Atom ** Bonds;
     
      void addOneBond()
      {
         ++NbBonds;
          Bonds = (Atom **) realloc(Bonds,NbBonds*sizeof(Atom *));
       };
    Le probleme est que le cas ou le nombre d'element dinimué nétait pas pris en compte et moi je dois le faire.
    Donc je vais passer avec vector pour faire du vrai C++ (meme si il y a encore du C qui traine au milieu je suis en train d'en reduire la taille)

    en plus pour je suis tjs pret

    PS : je mets resolu mais je viendrai p-e le reouvrir si j'ai des problemes avec vector

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Remarque:
    Les fonctions *alloc() ne savent pas traiter correctement les objets. Les structures simples oui, mais pas les objets. Soit, le realloc ici utilisé était faux -- en l'abscence du new de placement.

    Bref, à ton niveau, ne t'embête pas et migre tout vers les collections de la bibliothèque standard.

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

Discussions similaires

  1. [debutant]affichage du contenu d'un tableau dans du JTextField
    Par mehdi_swatch dans le forum Composants
    Réponses: 2
    Dernier message: 30/11/2006, 11h16
  2. [Debutant] Stocker des objets dans un tableau à plusieurs indices
    Par Invité dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/09/2006, 18h04
  3. [debutant] Connaitre la longueur d'un tableau.
    Par parp1 dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2006, 18h32
  4. Réponses: 4
    Dernier message: 11/01/2006, 09h22
  5. [debutant] ajout de ligne a un tableau
    Par rivierem dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 29/09/2005, 10h44

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