割り当てたメモリへのポインタのみを含む構造体があります。各要素で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);
各要素でfreeを呼び出すのではなく、mdlのポインターを再帰的に繰り返す方法はありますか?
(実際には、それぞれにfree()を記述するだけの作業はほとんどありませんが、コードの重複を減らし、そこから学ぶのに役立ちます)