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

Ответы на вопрос(7)

Ваш ответ на вопрос