繁体   English   中英

C valgrind 内存泄漏

[英]C valgrind memory leakage

嗨,我的 Valgrind 显示内存错误,但我找不到它。

==18608== 堆摘要:

==18608== 退出时正在使用:1 个块中的 88 个字节

==18608== 总堆使用量:4 次分配,3 次释放,已分配 2,220 字节

==18608==

==18608== 搜索指向 1 个未释放块的指针

==18608== 检查了 53,708 字节

==18608==

==18608== 1 个块中的 88 个字节在丢失记录 1 of 1 中肯定丢失

==18608== 在 0x402D17C:malloc(在 /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so 中)

==18608== 由 0x8 0485BF: pmalloc (在 auf 中)

==18608== by 0x8048680: main (in auf)

==18608==

==18608== 泄漏摘要:

==18608== 肯定丢失了:1 个块中的 88 个字节

==18608== 间接丢失:0 个块中的 0 个字节

==18608== 可能丢失:0 个块中的 0 个字节

==18608== 仍然可达:0 个块中的 0 个字节

==18608== 被抑制:0 个块中的 0 个字节

==18608==

==18608== 错误摘要:来自 1 个上下文的 1 个错误(被抑制:来自 0 的 0)

==18608== 错误摘要:来自 1 个上下文的 1 个错误(被抑制:来自 0 的 0)

你分配了两个不同的int * s; 你没有释放第一个资源,但你释放了第二个资源而不用做任何事情:

print_prim(pmalloc(n), laenge);
free(pmalloc(laenge));

要正确释放第一个资源,您可以执行以下操作:

int *p = pmalloc(n);
print_prim(p, laenge);
free(p);

暂无
暂无

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

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