我有这个简单的代码:
#include <boost/unordered_set.hpp>
int main (int argc, char* argv[])
{
boost::unordered_set<int> bset;
for (int i=0; i<10000; i++) {
bset.insert(i);
}
return 0;
}
当我创建purify构建并运行时,我收到以下UMR(未初始化的内存读取)错误。我无法弄清楚如何摆脱这个。
****净化已检测的app_pure(pid 21943)****
UMR:未初始化的内存读取(10000次):
在线程21943中发生这种情况:
std :: pair&gt ;, bool&gt; boost :: unordered :: detail :: table_impl,int,boost :: hash,std :: equal_to&gt;&gt; :: emplace_impl&gt;(int const&amp;,boost :: unordered :: detail :: set,int,boost: :hash,std :: equal_to&gt; const&amp;)[unique.hpp:414] std :: pair&gt ;, bool&gt; boost :: unordered :: detail :: table_impl,int,boost :: hash,std :: equal_to&gt;&gt; :: emplace(boost :: unordered :: detail :: emplace_args1,int,boost :: hash,std: :equal_to&gt;&gt; const&amp;)[unique.hpp:393] std :: pair,boost :: unordered :: detail :: ptr_node const *&gt ;, bool&gt; boost :: unordered :: unordered_set,std :: equal_to,std :: allocator&gt; :: emplace(int const&amp;)[unordered_set.hpp:277] boost :: unordered :: unordered_set,std :: equal_to,std :: allocator&gt; :: insert(int const&amp;)[unordered_set.hpp:380]
main [app.cxx:8]
__ libc_start_main [libc.so.6]
_start [crt1.o]
- 在线程21943的堆栈上从0x7fffffffd668读取8个字节(7个字节,位于0x7fffffffd669 uninit)。
- 地址0x7fffffffd668是函数std :: pair&gt;中的局部变量“pos”的开始56字节,bool&gt; boost :: unordered :: detail :: table_impl,int,boost :: hash,std :: equal_to&gt;&gt; :: emplace_impl&gt;(int const&amp;,boost :: unordered :: detail :: set,int,boost: :hash,std :: equal_to&gt; const&amp;)。
我的提升版本是1.54.0
我的GCC版本是4.8.3
净化版本为7.3(净化7.3-mod1 150930 Linux(64位))
任何人都可以提供一些如何解决这个问题的提示吗?
由于