2014-09-04 23 views
0

对不起,这是一个愚蠢的问题。我最近在一个可执行文件上运行valgrind来查找内存泄漏。在Valgrind的内存泄漏报告,它显示了以下为可能丢失:如何在Eclipse IDE中添加GLIBCXX_FORCE_NEW来解决Valgrind字符串泄漏问题?

==20425== 64 bytes in 1 blocks are possibly lost in loss record 520 of 580 
==20425== at 0x4029FDE: operator new(unsigned int) (vg_replace_malloc.c:313) 
==20425== by 0x415F213: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) 
==20425== by 0x4161125: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) 
==20425== by 0x41617AF: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) 
==20425== by 0x804B805: test() (MyApp.cpp:228) 

通过堆栈溢出看完之后,似乎这种“串”错误报告是由一个内存池优化造成的,Valgrind的不喜欢它。建议使用GLIBCXX_FORCE_NEW来修复它。我如何配置Eclipse IDE以在编译期间使用它?

回答

0

尝试最近的valgrind(3.9.0或最后SVN版本),看看 如果 的valgrind --leak检查启发式= stdstring your_program 解决可能失去 (请注意,还有其他的启发帮助的C++ 使用--leak-check-heuristics = all将它们全部激活)

相关问题