【发布时间】:2012-11-26 05:48:41
【问题描述】:
我从 Valgrind 得到这个结果:
==24810== HEAP SUMMARY:
==24810== in use at exit: 0 bytes in 0 blocks
==24810== total heap usage: 9 allocs, 6 frees, 0 bytes allocated
==24810==
==24810== LEAK SUMMARY:
==24810== definitely lost: 0 bytes in 0 blocks
==24810== indirectly lost: 0 bytes in 0 blocks
==24810== possibly lost: 0 bytes in 0 blocks
==24810== still reachable: 0 bytes in 0 blocks
==24810== suppressed: 0 bytes in 0 blocks
它说没有内存泄漏。在我看来这是一个很好的结果。但是,这些9 个分配,6 个释放呢?看起来我还没有在某处释放一些内存。我检查了代码,有 3 个全局 const 指针。也许他们没有被认为是错误但被打印为不是免费的?
我应该担心这个还是应该认为代码没有错误? 谢谢你们。 ....只是试图理解指针和内存分配的所有 ANSI C 麻烦:)))
格言
【问题讨论】:
-
它说总堆使用量是
0 bytes allocated,它们可能是空分配吗?可以发一些代码吗? -
valgrind 算不算
reallocs? -
@Nick Nah,这仍然会导致非 0 块丢失。
-
g++ 在 Linux Ubuntu 10 上。Valgrind 实际上只适用于 Linux 上的 gcc&family
-
好吧,如果 valgrind 计算
reallocs,那么在 9 个allocs 中可能有 3 个带有非NULL指针参数的reallocs,所以这一切都加起来了。查源呢?
标签: c pointers memory-leaks heap-memory valgrind