Koz*_*oss 1 c free struct linked-list
假设我有一个标准的链表结构如下:
struct Linked {
int data;
Linked* next;
}
Run Code Online (Sandbox Code Playgroud)
我通过指针足够的内存来存储另一个并初始化它,calloc从而在循环中制作了一堆它们.根据链表的规范,我只维护一个指向第一个节点的指针,如下所示:nextLinked
struct Linked *first = make_list();
Run Code Online (Sandbox Code Playgroud)
现在,我想释放整个列表所占用的内存.我可以打电话吗?
free(first);
Run Code Online (Sandbox Code Playgroud)
让它释放所有内存(包括分配给所有next指针的内存),还是我必须从后端重新分配?
free()每次通话都必须有一个电话calloc().因此,您需要使用循环依次释放列表中的每个元素.您可以选择向后或向前进行释放,但您可能会发现前锋更容易:
void freelist(struct Linked *head)
{
while (head != NULL) {
struct Linked *tmp = head;
head = head->next;
free(tmp);
}
}
Run Code Online (Sandbox Code Playgroud)
注意(这很重要)您必须head->next 在释放节点之前读取其值.
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |