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用作临时指针:你为什么需要为它分配内存?
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |