如何正确释放一个结构?如果我有这是正确的?或者只是打电话免费一次是正确的?如何正确释放结构? ANSI C
typedef struct AStruct{
char * buffer;
int size;
} AStruct;
typedef struct S_Session {
int Id;
AStruct* buff;
char * name;
} S_Session;
S_Session* S_Session_new() {
S_Session* s = (S_Session*)malloc(sizeof(S_Session));
s->Id = 1;
s->buff = (AStruct*)malloc(sizeof(AStruct));
s->buff->buffer = malloc(8196);
s->buff->size = 8196;
s->name = malloc(100);
return s;
}
int main(int argc, char *argv[])
{
S_Session* sess = S_Session_new();
free(sess->buff->buffer);
free(sess->buff);
free(sess->name);
free(sess);
}
你拥有它的方式是正确的。 –
你已经调用了'malloc()'四次,所以你必须调用'free()'四次。 – EJP
它看起来不错。为了获得额外的分数,可以构造一个'S_Session_free()'函数来缩小它并匹配你的构造函数。不要忘记检查所有'malloc()'的返回值,并放弃两个不必要的转换。 –