我是否需要释放结构中的变量?

时间:2019-09-01 15:03:00

标签: c memory struct

我创建了一个包含变量的结构。结构如下:

typedef struct ABC {
    int x;
} ABC;

现在我要释放整个结构,是否需要首先释放变量?

ABC *p = malloc(sizeof(ABC));
p->x = 10;

free(&x);   // Is this step needed?
free(p);
p = NULL;

1 个答案:

答案 0 :(得分:0)

假设您的意思是p->x而不是x ...

free(&p->x);   // Is this step needed?

绝对不是。不仅不需要它,这也是错误的。您不能释放不是先前分配的指针的东西。字段x是一个整数。就那么简单。换句话说,为了能够free(),您必须先分配它。