[英]Valgrind complaining possible memory leak in std string's new operator
在我的项目中,我使用的是jsoncpp,boost和许多库,当我在包括jsoncpp在内的许多地方为程序运行valgrind时,boost库会显示在字符串创建中可能发生内存泄漏
我已经粘贴了valgrind错误片段
== 5506 == 489个块中的427,198字节可能会在8,359的丢失记录8,343中丢失
== 5506 == at 0x4C2B1C7:operator new(unsigned long)(在/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so中)
== 5506 ==通过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 ==通过0x55EB0BD:char * std :: string :: _ S_construct(char const *,char const *,std :: allocator const&,std :: forward_iterator_tag)(basic_string.tcc:140)
== 5506 ==通过0x936261C:std :: basic_string,std :: allocator> :: basic_string(char const *,unsigned long,std :: allocator const&)(在/ usr / lib / x86_64-linux-gnu / libstdc ++中。如此(6.0.16)
== 5506 ==通过0x63FEB99:Json :: Value :: asString()const(json_value.cpp:611)
我的问题是这些错误是有效的还是误报?
提前致谢
完全可以确定,您可以进行循环测试并检查内存占用情况。
我们有类似的消息,但结果却是误报,因此我们将它们添加到了禁止列表中。
Valgrind具有一些启发式方法,可以减少可能丢失的“误报”数量。
o,它具有启发式功能,可以更好地检测std :: string。
使用以下选项来激活一些启发式方法:--leak-check-heuristics = heur1,heur2,...用于改善泄漏搜索的启发式方法误报[无],其中heur是以下之一:stdstring length64 newarray multiinheritanceity全部
请注意,在即将到来的3.11版本中,此选项的默认值已从“无”更改为“全部”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.