c - Valgrind 内存泄漏这是什么错误?

标签 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)

在我生成抑制 block 之后:

==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== 

最佳答案

事实证明这是一个错误的泄漏,在 linux 虚拟机上测试了我的代码并且没有错误。谢谢。

关于c - Valgrind 内存泄漏这是什么错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33392649/

相关文章:

python - 如何将单个 PyObject(在 C++ 后端创建)传递给嵌入式 Python 解释器?

perl - 识别 Perl/DBI 代码中的内存问题

静态变量导致的 C++ 内存泄漏

vb.net - 简单的Emgucv网络摄像头提要似乎内存泄漏

c - 外部功能不起作用 - 但不确定原因

c - 我如何实现这个等式给出的带通滤波器?

c - major() 和 minor() 给出与 ls 不同的数字

macos - 运行 make 时如何修复 ranlib/libtool 错误

java - 无法在 Mac OS X 上通过套接字进行通信

c++ - 在 OSX -qt-xcb 上安装 Qt5