我有一个结构,仅包含指向我分配的内存的指针。有没有一种方法可以递归地释放每个作为指针的元素,而不是对每个元素调用 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() 几乎没有任何工作,但它会减少代码重复,并且对于学习很有用)
事实并非如此——尽管您可以编写一个方法来完成所有六次释放,这样您就不会错过任何一次。
void freeModel( model* md1 ) {
free (mdl->vertices);
free (mdl->normals);
free (mdl->uv_coords);
free (mdl->quads);
free (mdl->triangles);
free (mdl);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)