Рекурсивно освобождающие структуры C
У меня есть структура, которая содержит только указатели на память, которую я выделил. Есть ли способ рекурсивно освободить каждый элемент, являющийся указателем, вместо вызова 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;
И в моем коде я malloc каждый из структур для создания модели:
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 () для каждого, но это уменьшит дублирование кода и будет полезным для изучения)