我有一个结构,只包含指向我分配的内存的指针。有没有一种方法可以递归释放每个指针的元素,而不是每个元素都自由调用?递归释放C结构
例如,假设我有这样的布局:
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);
有没有一种方法,我可以递归迭代通过MDDL指针比在每个元素上自由调用?
(在实践中它几乎没有任何工作,只是写的free()为每一个,但它会减少代码的重复和学习是有用的)
啊聪明,谢谢!虽然这个解决方案确实看起来很脏,但是它避免了代码重复而没有性能损失,这是我以前从未见过的方法。我可能不会在实践中使用它,但它会用一个有趣的实现来解决我的问题,而不仅仅是重新组织代码。 – Kai 2009-06-03 02:06:29