UNINIT.CTOR.MIGHT

构造函数中可能存在未初始化的变量

UNINIT.CTOR.MIGHT 检查器发现构造函数中可能有未初始化的变量。

漏洞与风险

在 C++ 中,基元数据类型变量需要显式初始化。在类方法中使用未初始化的成员变量一般会导致不可预测的行为,并且可能存在安全隐患。

缓解与预防

为了避免使用未初始化的变量,务必确保构造函数对所有类字段都进行了初始化。

漏洞代码示例

复制
  class C {
      int i;

    public
      C(bool flag) {
        if (flag) i = 0;
      }
  };

Klocwork 标记了第 6 行,指出构造函数退出时,this->i 变量的值可能仍未初始化。

相关检查器