主要内容

未初始化的变量

不是局部变量的变量在被读取前未初始化

描述

此检查在读取的变量不是局部变量(而是全局或静态变量)时执行。它确定正被读取的变量是否已初始化。

默认情况下,Polyspace® 会将全局变量视为已初始化。只有当您阻止此默认初始化时,验证操作才会检查全局变量。另请参阅Code Prover Assumptions About Global Variable Initialization

有关复杂数据类型的初始化的更多示例,请参阅针对局部变量的等效检查项:Non-initialized local variable

示例

全部展开

int globVar;
int getVal();

void main() {
 int val = getVal();
 if(val>=0 && val<= 100)
   globVar += val;
}

在此示例中,globVar 递增时没有初始值。因此,未初始化的变量检查会生成红色错误。

此示例使用该选项来阻止全局变量的默认初始化。

更正 - 在使用之前初始化全局变量

一种可用的更正方法是在使用前初始化全局变量 globVar

int globVar;
int getVal();

void main() {
 int val = getVal();
 globVar = 0;
 if(val>=0 && val<= 100)
   globVar += val;
}

检查信息

组:数据流
语言:C | C++
缩写:NIV