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)
您没有free
在malloc
给定的代码中分配的内存,除非node == NULL
.您分配一块内存,将其分配给temp
,然后继续循环以重新分配给temp
其他地址,丢失您已分配的内存malloc
.
看起来你根本不需要它malloc
:你只是temp
用作临时指针:你为什么需要为它分配内存?