所以我有这个结构:
typedef struct type {
int a;
char* b;
} type;
在 main
程序中,我创建了 2 个这些结构的数组,并使用 malloc()
:
type *v;
type *w;
v=malloc(50*sizeof(type));
w=malloc(50*sizeof(type));
现在,如果我想释放这些结构数组,这样做是否正确:
free(v);
free(w);
?
最佳答案
是的,这是正确的。您只需要传递malloc()
和family 返回的指针即可。
调用 free()
时无需提及/提供分配内存的大小。大小将自动处理(由操作系统)。
FWIW,如果你已经为成员分配了动态内存,比如w[i].b
s,你需要先free()
它们,因为, 一旦你在 w
上调用了 free()
,在 w[i].b
中分配的所有内存将变得不可访问,因此你的程序将正在泄漏内存。
关于c - 释放通过 malloc 获得的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157236/