gpt4 book ai didi

c++ - 我是否安全地删除了链表?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:27 24 4
gpt4 key购买 nike

只是想知道这个删除链表的实现有没有缺陷/不一致/内存泄漏:

// Function to delete the entire linked list
void deleteList(Node** head) {

Node* current = *head;
Node* next;

while (current != 0) {

next = current->next;
delete current;
current = next;

}

*head = 0;
}

编辑:

struct Node {

int data;
Node* next;
Node(int data) : data(data){}

};

最佳答案

如果你通过引用而不是指针传递头指针,那会更像 C++:

void deleteList(Node * & head)
{
// (...)

head = nullptr; // NULL in C++ pre-11
}

此外,为了使代码更整洁,您可以在循环内移动 next 的声明:

while (current != 0) 
{
Node * next = current->next;
delete current;
current = next;
}

我对内存泄漏的唯一担心是正确释放节点的内容,但由于您存储的是一个简单的 int,因此应该不会有任何问题。

假设您的列表具有指向节点的有效指针并且头指针也有效,那么其他一切似乎都很好。

关于c++ - 我是否安全地删除了链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18095703/

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