Liberar recursivamente estruturas C
Eu tenho uma estrutura que contém apenas ponteiros para a memória que eu aloquei. Existe uma maneira de liberar recursivamente cada elemento que é um ponteiro, em vez de ligar livremente em cada u
Por exemplo, digamos que eu tenho esse layout:
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;
E no meu código eu localizo cada uma das estruturas para criar um modelo:
model* mdl = malloc (...);
mdl->vertices = malloc (...);
mdl->normals = malloc (...);
mdl->uv_coords = malloc (...);
mdl->quads = malloc (...);
mdl->triangles = malloc (...);
É fácil liberar cada ponteiro da seguinte maneira:
free (mdl->vertices);
free (mdl->normals);
free (mdl->uv_coords);
free (mdl->quads);
free (mdl->triangles);
free (mdl);
Existe uma maneira de iterar recursivamente pelos ponteiros em mdl, em vez de ligar gratuitamente em cada element
( Na prática, é quase impossível escrever gratuitamente () para cada um, mas isso reduziria a duplicação de código e seria útil aprender com)