Segmentation fault sur un free

Résolu
Pauline -  
 Pauline -
Bonjour,

Programmant en C, j'ai un char* (contenu dans s->bases un pointeur) que je peux afficher avec "printf("%s", s->bases);" (donc données accessibles). Cependant, "free(s->bases);" me renvoie une Segmentation fault (core dumped).
D'où peut venir cette segmentation fault?

Merci d'avance

5 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Tout simplement car votre pointeur pointe sur une zone en lecture seule. C'est à dire que la désallocation est interdite.
    1
  2. Pauline
     
    Elle doit aussi être en écriture vu que c'est le même programme, qui précédemment, affecte la valeur à mon pointeur :/.
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Je ne pense pas que ça soit en écriture sinon cela ne planterait pas.
    Pourrais-tu donner la ligne où tu as défini s->bases ?
    --

    Google is your friend
    0
  4. Pauline
     
    strcpy(array_of_seqs->seqs[array_of_seqs->nb_seqs]->bases,
    		     other_sequences[i]->bases);

    (ceci se trouve dans une boucle)
    other_sequence[i]->bases affectés à une chaine de caractères.
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Quel est le lien avec s->bases ?
      0
    2. Pauline
       
      S est le "renommage' de "array_of_seqs->seqs[i]" (appel de fonction)
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Ce que je souhaite c'est la définition de la variable pas son affectation.

    array_of_seqs->seqs[array_of_seqs->nb_seqs] est une structure contenant le champ bases. Mais le champ bases est définit en tant que :
    - char *bases ? Dans ce cas, je souhaite la ligne avec le malloc / calloc
    - char bases[X] ?

    Cdlt,
    0
    1. Pauline
       
      Bases était défini en tant que char *bases.

      Finalement, le problème a été corrigé par une connaissance.
      (Problème de modification du tableau, visiblement le free n'aimait pas..)
      Merci d'avoir répondu et d'avoir essayé de m'aider.
      0