Segmentation fault sur un free

Résolu/Fermé
Pauline - 12 mars 2012 à 18:59
 Pauline - 15 mars 2012 à 00:40
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
A voir également:

5 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 mars 2012 à 19:38
Tout simplement car votre pointeur pointe sur une zone en lecture seule. C'est à dire que la désallocation est interdite.
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 12/03/2012 à 22:34
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
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 mars 2012 à 19:39
Quel est le lien avec s->bases ?
0
S est le "renommage' de "array_of_seqs->seqs[i]" (appel de fonction)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 mars 2012 à 19:24
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
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