Bonjour, je ne comprends pas la cause du plantage de mon prgm. Je fais free(mon_vecteur) et là il plante. Voici le bout de code de mon main qui pause problème :
il affiche bien zut mais pas zut2, donc je suis allé dans ma fonction CreateEmptySpecies qui voici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 char * name_file="therm.dat"; /* file containing thermodynamic data */ Species ** TabSpecies=malloc(nb_especes_*sizeof(*TabSpecies)); assert(TabSpecies!=NULL); for(i=0;i<nb_especes_;++i) { printf("zut\n"); TabSpecies[i]=CreateEmptySpecies(); printf("zut2\n"); LoadSpecies(name_file,NameSpecies[i],TabSpecies[i]); printf("zut3\n"); }
Là il affiche tata et tete. j'ai donc deux question : pourquoi mon free(s->HT) ne marche pas ? et pourquoi s->LT est NULL mais s->HT n'est pas NULL ? Je vous envoie mon species.h
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 Species * CreateEmptySpecies(void) { Species * s=malloc(sizeof(*s)); assert(s!=NULL); s->name="no name"; s->M=0.0; s->T=0.0; if(s->LT!=NULL) { printf("tyty\n"); free(s->LT); } s->LT=malloc(7*sizeof(*s->LT)); assert(s->LT!=NULL); printf("tata\n"); if(s->HT!=NULL) { printf("tete\n"); free(s->HT); printf("tete2\n"); } printf("tata\n"); s->HT=malloc(7*sizeof(*s->HT)); assert(s->HT!=NULL); int i; for(i=0;i<7;++i) s->LT[i]=s->HT[i]=0.0; return s; }
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 #ifndef _SPECIES_H_ #define _SPECIES_H_ typedef struct { char * name; /* name */ double M; /* molar mass */ double T; /* critical temperature */ double * LT; /* 7 low temperature coefficients */ double * HT; /* 7 high temperature coefficients */ } Species; Species * CreateEmptySpecies(void); Species * CreateSpecies(char *,double,double,double *,double *); void PrintSpecies(Species *); void DestroySpecies(Species *); void LoadSpecies(char *,char *,Species *); #endif
Partager