Segmentation fault sur un free

Résolu
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. Contributeur
    Tout simplement car votre pointeur pointe sur une zone en lecture seule. C'est à dire que la désallocation est interdite.
    1
    1. Elle doit aussi être en écriture vu que c'est le même programme, qui précédemment, affecte la valeur à mon pointeur :/.
      0
      1. Contributeur
        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
        1. 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. Contributeur
            Quel est le lien avec s->bases ?
            0
          2. S est le "renommage' de "array_of_seqs->seqs[i]" (appel de fonction)
            0
        2. Contributeur
          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. 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