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 dynamique tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut Allocation dynamique tableau
    Bonjour à tous,

    J'essaie d'allouer dynamiquement la taille d'un tableau de chaînes de caractères (donc char *).
    Mon tableau se nomme explorateur->files, déclaré comme char** files ; dans une struct explorateur.
    Je calcule tout d'abord le nombre d'éléments que contiendra le tableau, que je mets dans la variable cmpt.
    Puis je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    explorateur->files = (char**) malloc(cmpt * sizeof(char *)) ;
    for (i=0 ; i<cmpt ; i++)
       explorateur->files[i] = (char *) malloc (255 * sizeof (char)) ;
    255 caractères est la taille maxi qu'auront les chaînes.

    Mon programme quitte immédiatement (segmentation fault). Quelle erreur ai-je fait ici ?

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    soit cmpt est trop grand, soit explorateur ne pointe sur rien.

  3. #3
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut
    Merci pour ta réponse.

    cmpt est dans mon test égal à 9.

    explorateur quant à lui pointe bien sur quelque chose puisque j'arrive à récupérer d'autres éléments. C'est une struct, et j'arrive à récupérer par exemple le cmpt, qui est placé dans explorateur->nbFiles.


    Après d'autres tests, c'est la première ligne qui fait déjà tout planter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    explorateur->files = (char **) malloc(cmpt * sizeof(char *)) ;

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Poste un code compilable qui reproduise l'erreur.

  5. #5
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Il nous faut la declaration du type de 'explorateur' ainsi que le moment ou tu alloue dynamiquement 'explorateur'. Il nous faut aussi un code minimal pour isolé l'erreur car tel quel, je ne vois pas d'erreur dans ton code.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Au passage, si la taille de chaque ligne est destinée à être fixe, allouer un tableau à deux dimensions plutôt qu'un tableau de tableaux peut être une bonne idée:
    http://www.developpez.net/forums/m1803870-7/
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. problème allocation dynamique tableau 2d
    Par virtual_bug dans le forum C++
    Réponses: 16
    Dernier message: 17/04/2012, 11h21
  2. Allocation dynamique tableau
    Par cstan dans le forum C++
    Réponses: 3
    Dernier message: 10/10/2011, 14h37
  3. constructeur allocation dynamique tableau
    Par Heimdall dans le forum C++
    Réponses: 7
    Dernier message: 20/03/2011, 23h15
  4. Allocation dynamique: Tableau de pointeur sur char
    Par Anonymouse dans le forum Débuter
    Réponses: 4
    Dernier message: 21/10/2007, 10h57
  5. Allocation dynamique tableau dans structure
    Par chental dans le forum C
    Réponses: 2
    Dernier message: 03/08/2006, 09h03

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