小编use*_*628的帖子

Memory sanitizer 报告全局对象构造中未初始化值的使用

use-of-uninitialized-value在执行以下编译的程序时收到警告clang++-9 -fsanitize=memory

#include <map>

class msan_test
{
  std::map<int, int> m_map;

public:
  msan_test()
  {
    m_map.insert(std::make_pair(1, 1));
    m_map.insert(std::make_pair(2, 2));
  }
};

msan_test gobj; // global object of above class

int main()
{
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的警告:

==16598==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x49898f in std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_get_insert_unique_pos(int const&) (/home/noname/a.out+0x49898f)
    #1 0x49828e in std::pair<std::_Rb_tree_iterator<std::pair<int const, int> >, bool> std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> …
Run Code Online (Sandbox Code Playgroud)

c++ constructor global clang msan

5
推荐指数
1
解决办法
607
查看次数

标签 统计

c++ ×1

clang ×1

constructor ×1

global ×1

msan ×1