繁体   English   中英

我可以安全删除链接列表吗?

[英]Am I safely deleting a linked list?

只想知道此删除链表的实现中是否存在任何缺陷/不一致/内存泄漏:

// 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,因此那里应该没有任何问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM