我最近一直试图在我的代码中对内存管理更加细致。只是为了笑,我写了一个只包含一个函数的简单C源文件,并使用valgrind来查看C编译器本身是否有任何泄漏。令我惊讶的是,确实如此!
valgrind --leak-check=full --show-reachable=yes gcc -c example.c
...bunch of junk...
==4587== LEAK SUMMARY:
==4587== definitely lost: 4,207 bytes in 60 blocks
==4587== indirectly lost: 56 bytes in 5 blocks
==4587== possibly lost: 27 bytes in 2 blocks
==4587== still reachable: 29,048 bytes in 47 blocks
==4587== suppressed: 0 bytes in 0 blocks
Clang也有泄漏,但只有68字节,所有这些都可以到达。
我认为如果你的代码有内存泄漏,你就会因为丢失的每个字节而被单独监禁。我是否误解了内存泄漏的影响?只要它不是一个长期运行的程序,它们实际上是否可以容忍?这实际上只是valgrind错了吗?