在自己的析构函数中删除链表是否安全?

时间:2013-12-07 21:15:06

标签: c++ exception linked-list destructor

我想清理我之前获得的任何资源,所以在我的析构函数中,我调用删除整个链表的函数clear

LinkedList::~LinkedList() {
    clear();
}

这样做是否安全?是否有异常的可能性?这就是clear的样子:

// deletes all nodes in a linked list
void LinkedList::clear() {

    Node* current = head;

    while (current) {

        Node* next = current->next;
        delete current;
        current = next;

    }

    head = nullptr;

}

1 个答案:

答案 0 :(得分:1)

我认为这是你在LL析构函数中通常所做的。您的LinkedList类只是节点链的包装器,因此只要您检查其他LinkedList方法中的空指针,它就是安全的。

此外,如果这不是您的计算机科学家庭任务,请考虑使用std :: list:)