在C中的Structure中释放char指针

时间:2015-11-05 19:24:29

标签: c

我正在编写一个代码来从C中的struct中释放char *。

代码就像

struct Name{
            char *p;
};

struct Name *name = malloc(sizeof(struct Name));
name->p = malloc(50);

现在我要取消分配整个结构:     自由(名称);

但是我想释放char指针,即p。

我该怎么做?

2 个答案:

答案 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);