释放通过malloc获得的结构数组

odi*_*n19 1 c malloc free

所以我有这个结构:

typedef struct type {
      int a;
      char* b;
} type;
Run Code Online (Sandbox Code Playgroud)

main程序中,我制作了这些结构的2个数组,并使用malloc():

type *v;
type *w;
v=malloc(50*sizeof(type));
w=malloc(50*sizeof(type));
Run Code Online (Sandbox Code Playgroud)

现在,如果我想释放这些结构数组是正确的:

free(v);
free(w);
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 5

是的,这是正确的.您只需要传递由malloc()family和family 返回的指针.

调用时,您无需提及/提供已分配内存的大小free().尺寸将自动处理(通过操作系统).

FWIW,在情况下,您已经分配的动态内存的成员,如w[i].bS,你需要free()他们首先是因为,一旦你打电话free()w,分配的所有内存w[i].b将无法访问,因此你的程序将被泄漏内存.