c - 如何解决我在代码中遇到的 valgrind 问题?

标签 c valgrind

下面是我的代码,它是一个双向链表,我遇到的问题是在这个函数中,它说: 使用大小 8 的未初始化值 在 0x400C71:append_linked_list (linked_list.c:83) 和, 大小 8 的写入无效 在 0x400c71:append_linked_list (linked_list.c83)

Node *append_linked_list(LinkedList *list, void *data)
{   

    Node *tailnode;

    if (list == 0)
    {
        fprintf(stderr, "Warning: list is empty.");
        printf("\n");
        return 0;
    }
    else 
    {  
        tailnode = (Node *)malloc(sizeof(Node));
        tailnode -> data = data;
        tailnode -> next = 0;
        tailnode -> prev = list -> tail;
        (list -> tail) -> next = tailnode;
        list -> tail = tailnode; 
    }

    return tailnode; 
}

第 83 行是

(list -> tail) -> next = tailnode;

最佳答案

这意味着

list -> tail

不包含有效的指针。

关于c - 如何解决我在代码中遇到的 valgrind 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58896946/

相关文章:

c - 有没有更好的方法在分配后将变量转换为 'const'?

c - 关于c中unsigned int的问题

c - 使用 Valgrind 进行程序调试

c - 带有 valgrind 的 G-WAN?备择方案?

c - C 中 replaceAll 中的内存泄漏

c - 使用 C 将逗号分隔的文本文件数据扫描到数组中

c - 重新排序二叉搜索树 'in place'

c - 归并排序中的逻辑错误

linux - 在 64 位机器上运行 valgrind 32 位二进制文​​件

c++ - 等待系统调用完成