Valgrind内存泄漏是什么错误?

时间:2015-10-28 13:41:23

标签: c macos memory-leaks valgrind suppression

每当我运行完整的valgrind内存泄漏检查时,我一直收到此错误,我真的无法分辨出此错误的来源。我的代码正在运行并且似乎是正确的,但我从那时起就遇到了这个错误。非常感谢任何建议,谢谢!

==2312== HEAP SUMMARY:
==2312==     in use at exit: 26,325 bytes in 190 blocks
==2312==   total heap usage: 20,531 allocs, 20,341 frees, 197,089 bytes allocated
==2312== 
==2312== Searching for pointers to 190 not-freed blocks
==2312== Checked 9,805,752 bytes
==2312== 
==2312== 272 (80 direct, 192 indirect) bytes in 1 blocks are definitely lost in loss record 53 of 67
==2312==    at 0x100009EBB: malloc (in /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==2312==    by 0x1001C44A2: __Balloc_D2A (in /usr/lib/system/libsystem_c.dylib)
==2312==    by 0x1001C4DEB: __d2b_D2A (in /usr/lib/system/libsystem_c.dylib)
==2312==    by 0x1001C1443: __dtoa (in /usr/lib/system/libsystem_c.dylib)
==2312==    by 0x1001EA07A: __vfprintf (in /usr/lib/system/libsystem_c.dylib)
==2312==    by 0x10021335C: __v2printf (in /usr/lib/system/libsystem_c.dylib)
==2312==    by 0x1001E901D: vfprintf_l (in /usr/lib/system/libsystem_c.dylib)
==2312==    by 0x1001E6EB7: printf (in /usr/lib/system/libsystem_c.dylib)
==2312==    by 0x100001B02: main (in ./tldmonitor)
==2312== 
==2312== LEAK SUMMARY:
==2312==    definitely lost: 80 bytes in 1 blocks
==2312==    indirectly lost: 192 bytes in 5 blocks
==2312==      possibly lost: 0 bytes in 0 blocks
==2312==    still reachable: 0 bytes in 0 blocks
==2312==         suppressed: 26,053 bytes in 184 blocks
==2312== 
==2312== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 16 from 16)
--2312-- 
--2312-- used_suppression:      1 OSX1011:21-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:944 suppressed: 4,096 bytes in 1 blocks
--2312-- used_suppression:      1 OSX1011:15-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:886 suppressed: 4,096 bytes in 1 blocks
--2312-- used_suppression:     10 OSX1011:17-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:906 suppressed: 3,392 bytes in 55 blocks
--2312-- used_suppression:      3 OSX1011:16-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:897 suppressed: 2,816 bytes in 44 blocks
--2312-- used_suppression:      2 OSX1011:4-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:778 suppressed: 4,152 bytes in 2 blocks
--2312-- used_suppression:      2 OSX1011:19-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:924 suppressed: 2,592 bytes in 2 blocks
--2312-- used_suppression:      7 OSX1011:7-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:808 suppressed: 1,680 bytes in 22 blocks
--2312-- used_suppression:     11 OSX1011:18-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:915 suppressed: 2,312 bytes in 11 blocks
--2312-- used_suppression:     20 OSX1011:10-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:839 suppressed: 2,461 bytes in 39 blocks
--2312-- used_suppression:      2 OSX1011:8-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:819 suppressed: 520 bytes in 2 blocks
--2312-- used_suppression:      2 OSX1011:20-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:934 suppressed: 224 bytes in 5 blocks
==2312== 
==2312== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 16 from 16)

生成抑制块后:

==2317== HEAP SUMMARY:
==2317==     in use at exit: 26,325 bytes in 190 blocks
==2317==   total heap usage: 20,531 allocs, 20,341 frees, 197,089 bytes allocated
==2317== 
==2317== Searching for pointers to 190 not-freed blocks
==2317== Checked 9,805,752 bytes
==2317== 
==2317== 272 (80 direct, 192 indirect) bytes in 1 blocks are definitely lost in loss record 53 of 67
==2317==    at 0x100009EBB: malloc (in /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==2317==    by 0x1001C44A2: __Balloc_D2A (in /usr/lib/system/libsystem_c.dylib)
==2317==    by 0x1001C4DEB: __d2b_D2A (in /usr/lib/system/libsystem_c.dylib)
==2317==    by 0x1001C1443: __dtoa (in /usr/lib/system/libsystem_c.dylib)
==2317==    by 0x1001EA07A: __vfprintf (in /usr/lib/system/libsystem_c.dylib)
==2317==    by 0x10021335C: __v2printf (in /usr/lib/system/libsystem_c.dylib)
==2317==    by 0x1001E901D: vfprintf_l (in /usr/lib/system/libsystem_c.dylib)
==2317==    by 0x1001E6EB7: printf (in /usr/lib/system/libsystem_c.dylib)
==2317==    by 0x100001B02: main (in ./tldmonitor)
==2317== 
==2317== 

1 个答案:

答案 0 :(得分:0)

原来这是一个虚假的泄漏,在linux虚拟机上测试我的代码,没有错误。感谢。