Erreur de segmentation en utilisant la fonction free
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:
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");
} |