valgrind:使用std :: string :: assign中的unitialized值

时间:2016-02-04 20:30:22

标签: c++ std valgrind

valgrind报告以下代码的错误

void test(const std::vector<string> &strvec) {
  string val;
  if (strvec.size() > 0) {
    val = strvec.front(); // use of uninitialized value of size 8
  }
}

很抱歉,我无法发布完整的代码,因为它取决于很多其他事情。这只是一个简单的代码片段。

由于valgrind没有报告任何有关size()检查的错误,所以我认为 我应该能够得到它的前线。但我不明白为什么它抱怨访问未初始化的值。

1 个答案:

答案 0 :(得分:0)

我发现了问题。

就...而言   https://blog.mozilla.org/nnethercote/2009/02/27/eliminating-undefined-values-with-valgrind-the-easy-way/

实际上,当任何操作依赖于因访问未定义变量而导致的先前跳转时,它会为这些操作报告相同的错误。

在我的情况下,这个错误取决于远离这里的if-check,但代码路径确实取决于那个。

valgrind是否可以选择报告&root-cause&#39;?

相关问题