我是否需要在结构中释放结构?

The*_*Cat 3 c struct

我有以下代码.我想妥善释放我的所有记忆.如您所见,我在a_struct中有一个b_struct.我想知道是否需要在a_struct中手动释放b_struct,如果是,那么正确的方法是什么?

#include <stdlib.h>
#include <stdio.h>

struct b_struct {
    int c;
};

struct a_struct {
    struct b_struct b;
};

int main(int argc, char **argv)
{
  struct a_struct *a;
  a = calloc(1, sizeof(*a));
  a->b.c = 5;
  printf("Value: %d", a->b.c);
  free(a);
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*art 8

我想知道是否需要在a_struct中手动释放b_struct

没有.

malloc(3)手册页:

free()函数释放内存空间指向ptr,必须已经由先前调用返回malloc(),calloc()realloc().

分配sizeof(struct a_struct)字节时,包括该结构的所有成员,包括struct b_struct成员.这个结构成员与一个intchar[]成员没有什么不同; 它只是分配器的一个连续内存块.