瓦尔格林德对带有默认参数的变量进行"conditional jump on uninitialized value"

Valgrind giving "conditional jump on uninitialized value" on variable with default parameter

本文关键字:conditional jump value uninitialized on 变量 林德 参数 默认      更新时间:2023-10-16

我正在对我拥有的一些C++代码运行 valgrind,它给出一个错误,说我对未初始化的值有条件跳转。这是有问题的一段代码,它是一个方法(不是静态的(。

if (debug_ & 0x1) {
    printf("Debugging information...n");
}

但是变量debug_是在构造函数中设置的,如下所示:

MyClass::MyClass(
    AnotherClass* interface,
    int debug) :
    debug_(debug)
{
    //Some other irrelevant stuff

}

标头为该参数定义了一个默认参数:

class MyClass : boost::noncopyable {
  public:
    explicit MyClass(AnotherClass* interface, int debug=0xFF);
  //Other stuff
  private:
    int debug_;
}

但为了更好地衡量,即使我实例化这个类,我也将一个值传递给第二个参数。我错过了什么?

好吧,我觉得很愚蠢,但SSCCE的事情为我指明了正确的方向。我以为我已经看过了一切,但没有。该类中有一个 setDebug(( 方法可以更改调试值,它被构造函数调用了几级,并从另一个尚未初始化的结构中传入数据。