Valgrind在std string的new运算符中抱怨可能的内存泄漏

时间:2015-08-24 09:56:46

标签: c++ valgrind jsoncpp

在我的项目中我正在使用jsoncpp,boost和许多库,当我在包括jsoncpp在内的许多方面为我的程序运行valgrind时,它会在字符串创建中显示可能的内存泄漏

我已粘贴了valgrind错误代码段

  489块中的

== 5506 == 427,198字节可能在损失记录8,343中丢失8,359

     

== 5506 ==在0x4C2B1C7:operator new(unsigned long)(在/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so中)

     

== 5506 == by 0x9360A88:std :: string :: _ Rep :: _ S_create(unsigned long,unsigned long,std :: allocator const&)(在/ usr / lib / x86_64-linux-gnu / libstdc ++中。 so.6.0.16)

     

== 5506 == by 0x55EB0BD:char * std :: string :: _ S_construct(char const *,char const *,std :: allocator const&,std :: forward_iterator_tag)(basic_string.tcc:140)

     

== 5506 == by 0x936261C:std :: basic_string,std :: allocator> :: basic_string(char   const *,unsigned long,std :: allocator const&)(in   / usr / lib中/ x86_64的-Linux的GNU /的libstdc ++。so.6.0.16)

     

== 5506 == by 0x63FEB99:Json :: Value :: asString()const(json_value.cpp:611)

我的问题是这些错误是有效还是误报?

提前致谢

1 个答案:

答案 0 :(得分:1)

Valgrind有一些启发式方法可以减少误报率[' 可能会丢失。

A.o。,它有一个启发式来更好地检测std :: string。

使用以下选项激活一些启发式方法:        --leak-check-heuristics = heur1,heur2,...这是一种启发式方法             改善泄漏搜索误报[无]             heur是以下之一:               stdstring length64 newarray multipleinheritance all none

请注意,在即将发布的3.11版本中,此选项的默认值 已被更改为“无”#39;到了所有'。