繁体   English   中英

当我在我的 C 程序中运行这个 function 时,为什么会不断出现 memory 泄漏?

[英]How come i keep getting a memory leak when i run this function in my C program?

所以基本上我正在为 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()

您正在获取 memory 泄漏,因为在current != temp的情况下您没有调用free 您在else部分所做的只是简单地分配previous->next = current->next而不删除当前节点。

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

暂无
暂无

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

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