Bonjour,
j'ai fait un programme en C sous Visual C++ 6.0. Tout se passe bien lors de l'exécution. Lors de la libération de la mémoire j'appelle la fonction suivante :
A la sortie de cette fonction, rfit == NULL. Dans le debugger, pas à pas, tous les champs sont bien remis à NULL. Lorsque je sors de cette fonction, rfit->gif (idem pour tous les champs), le debugger m'affiche
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 void DestroyResultatFit(ResultatFit ** rfit) { if(*rfit != NULL) { DestroyGRC(&(*rfit)->grc); DestroyGIF(&(*rfit)->gif); DestroyGSF(&(*rfit)->gsf); DestroyPLC(&(*rfit)->plc); DestroyGRF(&(*rfit)->grf); DestroyDCN(&(*rfit)->dcn); DestroyExtrapolation(&(*rfit)->extra); DestroyDFLU(&(*rfit)->dflu); DestroyCyclesGSFGRCGRF(&(*rfit)->cycles); DestroyGIFDELI(&(*rfit)->gifdeli); DestroyPLCDELI(&(*rfit)->plcdeli); FREE(*rfit); } }
pourquoi ?gif CXX0030: Error: expression cannot be evaluated
Maintenant, lorsque ma fonction "coeur de calcul" est appelée via une DLL (j'ai fait un autre projet qui me crée ma dll et au lieu d'appeler la fonction j'appelle la dll), le programme plante lors de la libération de la mémoire.
Pouvez-vous m'aider s'il vous plait ? Je vous envoie qq structures. Si je comprends pour le champs rfit->gif, je comprendrais pour tout le reste.
Merci d'avance
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 typedef struct { double coeff[GIF_MAX_NBELEM]; double ted; double teg; double etr; double em; } GIF; GIF * CreateGIF(double coeff[GIF_MAX_NBELEM],double ted,double teg,double etr,double em) { int i; GIF * gif=malloc(sizeof(*gif)); if(gif == NULL) return NULL; for(i=0;i<GIF_MAX_NBELEM;i++) gif->coeff[i]=coeff[i]; gif->ted=ted; gif->teg=teg; gif->etr=etr; gif->em=em; return gif; } void DestroyGIF(GIF ** gif) { FREE(*gif); }
Partager