Libération pointeur dans structure
Bonjour,
J'ai besoin de faire des fonctions qui libèrent des structures et les pointeurs qu'elles contiennent.
Code:
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; |
Je me demande si je peux faire une seule fonction:
Code:
1 2 3 4
| void free_structA(structA* s){
free(s->p);
free(s);
} |
pour libérer la structA dans 2 cas différents (structB et structC):
Code:
1 2 3 4 5
| structB b;
structC c;
[...]allocations[...]
free_structA(&b.s);
free_structA(c.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:
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)