Liberación recursiva de estructuras de C
Tengo una estructura que solo contiene punteros a la memoria que he asignado. ¿Hay alguna manera de liberar recursivamente cada elemento que es un puntero en lugar de llamar gratis a cada uno?
Por ejemplo, digamos que tengo este diseño:
typedef struct { ... } vertex;
typedef struct { ... } normal;
typedef struct { ... } texture_coord;
typedef struct
{
vertex* vertices;
normal* normals;
texture_coord* uv_coords;
int* quads;
int* triangles;
} model;
Y en mi código malloc cada una de las estructuras para crear un modelo:
model* mdl = malloc (...);
mdl->vertices = malloc (...);
mdl->normals = malloc (...);
mdl->uv_coords = malloc (...);
mdl->quads = malloc (...);
mdl->triangles = malloc (...);
Es sencillo liberar cada puntero así:
free (mdl->vertices);
free (mdl->normals);
free (mdl->uv_coords);
free (mdl->quads);
free (mdl->triangles);
free (mdl);
¿Hay alguna forma de que pueda iterar recursivamente a través de los punteros en mdl en lugar de llamar gratis a cada elemento?
(n la práctica, casi no es trabajo escribir free () para cada uno, pero reduciría la duplicación de código y sería útil aprender de)