У меня есть структура, которая содержит только указатели на память, которую я выделил. Есть ли способ рекурсивно освободить каждый элемент, являющийся указателем, вместо вызова free для каждого?
Например, допустим, у меня есть такой макет:
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;
И в своем коде я размещаю каждую структуру для создания модели:
model* mdl = malloc (...);
mdl->vertices = malloc (...);
mdl->normals = malloc (...);
mdl->uv_coords = malloc (...);
mdl->quads = malloc (...);
mdl->triangles = malloc (...);
Достаточно просто освободить каждый указатель следующим образом:
free (mdl->vertices);
free (mdl->normals);
free (mdl->uv_coords);
free (mdl->quads);
free (mdl->triangles);
free (mdl);
Есть ли способ, которым я могу рекурсивно перебирать указатели в mdl, вместо того, чтобы вызывать free для каждого элемента?
( На практике практически нет необходимости просто писать free () для каждого, но это уменьшит дублирование кода и будет полезно учиться у )