当我在C程序中运行这个函数时,为什么总是出现内存泄漏



所以基本上我是为linkedList编写代码的,但由于这里的代码,我一直收到memoryLeak。有谁能帮我找出原因,并向我解释我做错了什么吗?

struct Node* deleteNode(int data, struct Node* head){
struct Node* current = head;
struct Node* previous = NULL;
if(head == NULL){
return NULL;
}
while(current->data != data){
if(current->next == NULL){
return NULL;
}else{
previous = current;
current = current->next;
}
}
if(current == head){
struct Node* temp = head;
head = head->next;
free(temp);
}else
{
previous->next = current->next;
}
current = NULL;
return head;
}

free()不是链表的第一个元素时,您永远不会在已删除的列表节点上调用它。

由于在current != temp的情况下没有调用free,因此出现内存泄漏。在else部分中所做的只是简单地分配previous->next = current->next,而不删除当前节点。

您已经使用while循环找到了要删除的节点,所以在previous->next = current->next之后添加free(current)

相关内容

  • 没有找到相关文章

最新更新