我想从Arraylist创建linkedList。我使用新的curNode并给出值,但是当我想在使用它之后删除它时,它是错误的。为什么我不能删除curNode? p>
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode *addListNode(int* arr,int n){
ListNode *head=NULL,*curNode,*tail;
for(int index=0;index!=n;++index){
curNode = new ListNode(arr[index]);
if (head==NULL)
head=curNode;
else
tail->next=curNode;
tail = curNode;
//delete curNode;
}
return head;
}
答案 0 :(得分:0)
实际上,您指定的是指针,而不是值:head=curNode;
,tail->next=curNode;
,tail = curNode;
。
因此,您不应该删除相同的指针,因为它将释放新创建的ListNode元素所指向的内存。
您应该在ListNode析构函数中使用返回的ListNode或更好的内容后删除已分配的内存。还要考虑使用智能指针(例如std::unique_ptr<ListNode>
)来确保分配的内存在不再使用时会自动释放。