destruction de ma structure
Bonjour, je n'arrive pas à expliquer la cause de mon segmentation fault.
Voici mon fichier .c
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
|
#include<stdio.h>
#include<stdlib.h>
#include "distribution.h"
#define MEMERROR fprintf (stderr,"%s %d : Allocation Memory Error\n", __FILE__,__LINE__)
Distribution * CreateEmptyDistribution(void)
{
Distribution * d=malloc(sizeof(*d));
if(d==NULL)
{
MEMERROR;
exit(EXIT_FAILURE);
}
d->name=NULL;
d->param=malloc(sizeof(*d->param));
if(d->param==NULL)
{
MEMERROR;
exit(EXIT_FAILURE);
}
return d;
}
void DestroyDistribution(Distribution ** d)
{
free((*d)->name); (*d)->name=NULL;
free((*d)->param); (*d)->param=NULL;
free(*d); *d=NULL;
} |
Tout à la fin de mon main, je fais
Code:
1 2
|
DestroyDistribution(&d); |
et c'est à ce niveau qu'il y a mon segmentation fault. Pourquoi ? Dans mon code, je fais
Code:
1 2 3 4 5
|
d->name=strdup(name);
d->param->eps=0.1;
d->param->delta=1e-9;
d->param->var=1.; |
Rien de bien sorcier en somme.
Mais je doute que mon erreur vienne de là. Depuis ce matin, je mets des pointeurs de fonctions un peu partout, mais je n'ai jamais touché à la variable d (ma distribution). Est-ce qu'une erreur de pointeur peut se "déplacer" pour "atterir" à mon DestroyDistribution(&d); ?
Pourtant, je suis quasiment sûr que ma fonction DestroyDistribution est correctement écrite...
Merci de votre aide.