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)