【发布时间】:2014-02-07 20:46:49
【问题描述】:
您好,我正在尝试编写一个函数,该函数接收链表的头部并释放它分配的所有内存。这是我写的原始代码。
void clear_nodes(List *h) {
if (!h->next) {
free(h);
***h = NULL;***
}
else {
clear_nodes(h->next);
clear_nodes(h);
}
}
但是它不起作用。所以我把它改成了
void clear_nodes(List *h) {
if (!h->next) {
free(h);
}
else {
clear_nodes(h->next);
***h->next = NULL;***
clear_nodes(h);
}
}
现在它起作用了。 注意两者之间的区别,我只是想知道为什么我不能直接将指针设为空。是因为它是局部变量还是什么?但是将指针标记为 null 应该使指针指向一些我无法访问的内存地址吗?我是在本地还是在全球范围内进行这有什么关系。
提前谢谢你们。
【问题讨论】:
标签: c linked-list