UNINIT.CTOR.MUST

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

UNINIT.CTOR.MUST 检查器可发现构造函数中存在未初始化的类变量。

漏洞与风险

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

缓解与预防

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

漏洞代码示例

复制
  class C {
      int i;
      int j;
    public
      C() {
      this->j = 0; 
      }
  };

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

相关检查器