如果我有几个链接结构用C,如:是否有可能一般免费链表的记忆用C
struct structA {
int a;
int b;
struct structA *next;
}
struct structB {
char a;
int b;
struct structB *next;
}
,我动态分配内存是这样的:
struct structA *mystructA = (struct structA*) malloc(sizeof(struct structA));
mystructA->next = (struct structA*) malloc(sizeof(struct structA));
struct structB *mystructB = (struct structB*) malloc(sizeof(struct structB));
mystructB->next = (struct structB*) malloc(sizeof(struct structB));
做我总是必须为像这样的每种结构类型释放它:
struct structA *p, *pNext;
for (p = mystructA; p != NULL; p = pNext) {
pNext = p->next;
free(p);
}
struct structB *p, *pNext;
for (p = mystructB; p != NULL; p = pNext) {
pNext = p->next;
free(p);
}
或者是否有任何通用解决方案?我假设没有其他解决方案,因为free()
过程必须知道有多少个字节必须被释放。但也许我错了,有人可以更好地教我。
你必须一个接一个地释放结构。 – 2013-07-19 12:58:38