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++Builder Discussion :

Bug tableau a 2 dimension


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut Bug tableau a 2 dimension
    Bonsoir
    J'essaye de créer un tableau dynamique a deux dimension.
    Et cela pose des problème d'allocation mémoire lorsque je le "delete"
    Avec codeguard je peut aussi voir qu'a l'allocation il y à des problèmes

    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AnsiString **Chaine  = NULL ;
    Chaine= new AnsiString*[10] ;
    for (int j = 0 ; j <  100; j++) Chaine[j] = new AnsiString[10];
    Codeguard indique un problème a la 3ème ligne :"Attempt to access 4 byte(s) at 0x00 Blablablablabla "

    y a quelqu'un pour m'aider sur ce coup la ?

  2. #2
    Membre expérimenté
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Par défaut
    Je vois un truc qui ne m'a pas l'air de jouer :

    for ( int j = 0; j < 100; j++)

    Chaine est déclaré comme un tableau de 10 series de 10 chaines AnsiString. (enfin, en tout cas un tableau de 10 pointeurs sur des AnsiString , qu'on peut utiliser à la manière d'un tableau).

    donc dans chaine[i], i peut varier de 0 à 9, et pas 99.

    on accède à un tableau multidimension comme ceci :

    chaine[i][j].

    Mais comme tu es en C++, je te conseillerai d'utiliser un std::vector<AnsiString>, c'est un tableau dynamique simple de la STL. Tu auras beaucoup moins de new et de delete à gerer, donc moins d'erreurs de mémoire et de codage.


    de plus si tu utilises new[], il faut désallouer avec delete[] et non delete.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut
    Oups j'ai vu m'on erreur, comme quoi remettre a plas le code ça aide a y voir plus clair.
    J'essayer d'instancier 100 ligne alors qu'il n'y en que 10

    N'y a t'il pas de moyen de ne définir ni le nombre de ligne ni le nombre de collone.
    et que tous cela soit faite dynamiquement.
    c'est a dire decider dynamiquement du nombre de collone.
    Et créer les nouvelles lignes a la demande.

    un peut du genre

    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
     
    AnsiString **Chaine  = NULL ;
     
    creer_tableau(int Col)
    {
    Chaine= new ?????
    }
     
    creer_ligne(AnsiString textes, int Col)
    {
    static int nbLigne = 0 ;
    Chaine[nbLigne] = new AnsiString[Col];
    nbLigne++
    Chaine[nbLigne][col] = textes ;
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 11
    Par défaut
    Merci pour ta réponse. (je viens juste de la voir)
    Merci, tu a trouvé l'erreur.
    Je vais suivre ton conseil sur la STL.
    J'ai toujours fais sans (ou presque sans) la STL, va falloir que je m'y mette.

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/11/2005, 19h55
  2. Réponses: 13
    Dernier message: 13/10/2005, 16h03
  3. Tableau a trois dimension!!!
    Par krfa1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/10/2005, 15h52
  4. Réponses: 1
    Dernier message: 30/09/2005, 19h17
  5. [Tableau]comment connaitre la taille d'un tableau à 2 dimensions
    Par Kyti dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/04/2005, 10h27

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