您好我的Valgrind向我显示内存错误,但我找不到它。
== 18608 == HEAP SUMMARY:
== 18608 ==在退出时使用:1个块中的88个字节
== 18608 ==总堆使用量:4个分配,3个释放,2,220个字节分配
== 18608 ==
== 18608 ==搜索指向1个未释放块的指针
== 18608 ==检查了53,708字节
== 18608 ==
== 18608 == 1个块中的88个字节肯定会丢失1个丢失记录1
== 18608 ==在0x402D17C:malloc(在/usr/lib/valgrind/vgpreload_memcheck-x86-linux.so中)
== 18608 == by 0x8 0485BF:pmalloc(在auf中)
== 18608 == by 0x8048680:main(在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开始)
答案 0 :(得分:1)
您分配了两个不同的int *
s;你没有释放第一个资源,但你没有做任何事情就释放第二个资源:
print_prim(pmalloc(n), laenge);
free(pmalloc(laenge));
要正确释放第一个资源,您可以执行以下操作:
int *p = pmalloc(n);
print_prim(p, laenge);
free(p);