我正在编写一个代码来从C中的struct中释放char *。
代码就像
struct Name{
char *p;
};
struct Name *name = malloc(sizeof(struct Name));
name->p = malloc(50);
现在我要取消分配整个结构: 自由(名称);
但是我想释放char指针,即p。
我该怎么做?
答案 0 :(得分:3)
首先,您必须在取消分配名称之前取消分配name-> p。
free(name->p);
free(name);
答案 1 :(得分:1)
特别是如果您在结构中使用指针,则应始终将其设置为0或调用calloc。您还应该检查malloc的返回值。如果它返回NULL则无法分配。
struct Name {
char *p;
};
//allocate
struct Name *name = malloc(sizeof *name);
memset(name, 0, sizeof *name);
name->p = malloc(50 * sizeof *name->p);
//deallocate
free(name->p);
free(name);