我创建了一个包含变量的结构。结构如下:
typedef struct ABC {
int x;
} ABC;
现在我要释放整个结构,是否需要首先释放变量?
ABC *p = malloc(sizeof(ABC));
p->x = 10;
free(&x); // Is this step needed?
free(p);
p = NULL;
答案 0 :(得分:0)
假设您的意思是p->x
而不是x
...
free(&p->x); // Is this step needed?
绝对不是。不仅不需要它,这也是错误的。您不能释放不是先前分配的指针的东西。字段x
是一个整数。就那么简单。换句话说,为了能够free()
,您必须先分配它。