gpt4 book ai didi

c - 释放数据结构的错误方法

转载 作者:行者123 更新时间:2023-12-02 07:17:40 25 4
gpt4 key购买 nike

我在大学参加了一次 C 编程考试,那次考试的问题之一是如何释放链表数据结构。

我的方法是释放每个节点的数据,但没有充分的理由我没有得到该练习的要点。

这是我未被接受的代码:

#include <stdlib.h>

struct node {
int value;
struct node *next;
};

void free_list(struct node *head) {
for (struct node *p = head; p != NULL; p = p->next) {
free(p);
}
}

有人能解释一下它有什么问题吗?从内存中释放链表的正确方法是什么?

最佳答案

for 循环的最后一部分是读取 p->next after 循环体调用了 free( p);.

你需要缓冲指针:

while (p != NULL)
{
struct node * const next = p->next;
free(p);
p = next;
}

关于c - 释放数据结构的错误方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56887223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com