指针被释放,但valgrind说它不是

Cai*_*tri 1 c memory malloc valgrind loss

我释放了一个我做的指针,但Valgrind仍然报告我丢失了字节,所以我不确定如何处理它.

有问题的代码是:

listNode* temp = (listNode*)malloc(sizeof(listNode));
node = list->head;
while (node != NULL)
{
    temp = node->next;
    free(node->entry);
    free(node);
    node = temp;
}
free(temp);
Run Code Online (Sandbox Code Playgroud)

使用valgrind输出:

16 bytes in 1 blocks are definitely lost in loss record 13 of 21
==2137==    at 0xB823: malloc (vg_replace_malloc.c:266)
==2137==    by 0x100001B1E: freeList (main.c:110)
==2137==    by 0x100001CB5: main (main.c:157)
Run Code Online (Sandbox Code Playgroud)

pb2*_*b2q 5

您没有freemalloc给定的代码中分配的内存,除非node == NULL.您分配一块内存,将其分配给temp,然后继续循环以重新分配给temp其他地址,丢失您已分配的内存malloc.

看起来你根本不需要它malloc:你只是temp用作临时指针:你为什么需要为它分配内存?