Bonjour.
J’ai une erreur de segmentation en utilisant la fonction free que je ne parviens pas à comprendre.
L’erreur disparaît si je supprime l’instruction free(self->states);
J’ai épuré le code pour ne garder que les éléments liés à l’erreur.
Mon output est précisément
Coucou 1
Coucou 2
Erreur de segmentation (core dumped)
Quelqu’un comprend-t-il mon erreur?
Merci.
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> //#include "fa.h" struct fa { struct state *states; //Tableau des états composant l'automate }; struct state { //Chaque état, peut être final et/ou initial bool is_initial; bool is_final; }; void fa_create(struct fa *self, size_t alpha_count, size_t state_count) { self = malloc(sizeof(struct fa*)); self->states = calloc(state_count, sizeof(struct state*)); } void fa_destroy(struct fa *self) { free(self->states); // L'erreur disparait si je commente cela... free(self); } int main() { struct fa *autom=NULL; printf("Coucou 1 \n"); fa_create(autom, 3, 5); printf("Coucou 2 \n"); fa_destroy(autom); printf("Coucou 3 \n"); }
Partager