Bonjour,
J'ai besoin de faire des fonctions qui libèrent des structures et les pointeurs qu'elles contiennent.
Je me demande si je peux faire une seule fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 typedef struct{ int* p; }structA; typedef struct{ structA s; }structB; typedef struct{ structA* s; }structC;
pour libérer la structA dans 2 cas différents (structB et structC):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void free_structA(structA* s){ free(s->p); free(s); }
free_structA(&b.s); implique un free sur un pointeur de structA qui n'a pas été crée par un malloc. Cela pose-t-il problème? Ou dois-je faire 2 fonctions de libération pour chacun des cas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 structB b; structC c; [...]allocations[...] free_structA(&b.s); free_structA(c.s);
1 - libération des pointeurs contenus dans la structure et de la structure comme ici: free_structA(c.s)
2 - libération des pointeurs contenus dans la structure uniquement: free_pointers_in_structA(&b.s)
Partager