我应该删除在函数中创建的已使用指针吗?

时间:2019-03-24 22:42:51

标签: c++ linked-list heap

是的,我在C ++中碰到单个链接的List时,遇到了这种混乱。我在insert函数中创建了一个指针,但不确定是否要删除它。< / p>

我想,只要将它像这样推几步即可删除它:temp = temp->next->next但它看起来很愚蠢。

void List::insert(int data){
    Node* newNode = new Node(data);
    newNode->next = nullptr;
    if(isEmpty())
    {
        head = newNode;
        std::cout << "empty";
    }else{
        Node* temp = head;
        while(temp->next!=nullptr){
            temp = temp->next;
        }
        temp->next = newNode;
        delete temp; //If i remove this the program works ok and it is reasonable,since i delete the ref
    }
}

我非常确定我应该删除该节点,但是我不是100%确定必须这样做。有任何线索吗?

1 个答案:

答案 0 :(得分:0)

以下是一个线索:考虑List::size()。插入之前有几个节点,插入之后有几个节点? new Node创建一个节点,delete temp删除一个节点。

现在,如果您正确解决了这些问题,则可能仍然存在一些错误,可以删除错误的节点,但是至少insert是正确的。