使用libxml2时,valgrind向我显示泄漏

时间:2015-06-10 11:04:20

标签: c++ c memory-leaks valgrind libxml2

我有一个代码,我必须修复它。它有泄漏,我不知道问题出在哪里,但我认为有些事情做得不好。 有没有人有同样的问题,可以帮助我吗?

==3923== 32 bytes in 1 blocks are still reachable in loss record 1 of 2
==3923==    at 0x4C2CC70: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3923==    by 0x652168F: _dlerror_run (dlerror.c:141)
==3923==    by 0x65210C0: dlopen@@GLIBC_2.2.5 (dlopen.c:87)
==3923==    by 0x693F475: ??? (in /lib/x86_64-linux-gnu/liblzma.so.5.0.0)
==3923==    by 0x6943DC7: lzma_auto_decoder (in /lib/x86_64-linux-gnu/liblzma.so.5.0.0)
==3923==    by 0x5DB14DC: ??? (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923==    by 0x5DB1E4F: __libxml2_xzread (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923==    by 0x5CFFB08: ??? (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923==    by 0x5D01674: xmlParserInputBufferGrow (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923==    by 0x5CD3E34: xmlParserInputGrow (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923==    by 0x5CD921A: ??? (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923==    by 0x5CEB03C: xmlParseDocument (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923== 
==3923== 44 bytes in 1 blocks are still reachable in loss record 2 of 2
==3923==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3923==    by 0x400FDC0: _dl_signal_error (dl-error.c:90)
==3923==    by 0x40146CF: _dl_open (dl-open.c:715)
==3923==    by 0x652102A: dlopen_doit (dlopen.c:66)
==3923==    by 0x400FFF3: _dl_catch_error (dl-error.c:187)
==3923==    by 0x652162C: _dlerror_run (dlerror.c:163)
==3923==    by 0x65210C0: dlopen@@GLIBC_2.2.5 (dlopen.c:87)
==3923==    by 0x693F475: ??? (in /lib/x86_64-linux-gnu/liblzma.so.5.0.0)
==3923==    by 0x6943DC7: lzma_auto_decoder (in /lib/x86_64-linux-gnu/liblzma.so.5.0.0)
==3923==    by 0x5DB14DC: ??? (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923==    by 0x5DB1E4F: __libxml2_xzread (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923==    by 0x5CFFB08: ??? (in /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1)
==3923== 
==3923== LEAK SUMMARY:
==3923==    definitely lost: 0 bytes in 0 blocks
==3923==    indirectly lost: 0 bytes in 0 blocks
==3923==      possibly lost: 0 bytes in 0 blocks
==3923==    still reachable: 76 bytes in 2 blocks
==3923==         suppressed: 0 bytes in 0 blocks

1 个答案:

答案 0 :(得分:3)

http://valgrind.org/docs/manual/faq.html

  

"仍然可以到达"意味着你的程序可能没问题 - 它没有释放它可能拥有的内存。这很常见,而且往往是合理的。如果您不想看到这些报告,请不要使用--show-reachable = yes。

如上所述,您的代码应该没问题。 :)