exponenta event banner

Неинициализированная переменная

Переменная, отличная от локальной, не инициализируется перед считыванием

Описание

Эта проверка выполняется при чтении переменных, которые не являются локальными (глобальные или статические переменные). Определяет, инициализирована ли считываемая переменная.

По умолчанию Polyspace ® считает, что глобальные переменные инициализированы. Проверка проверяет глобальные переменные только в случае предотвращения инициализации по умолчанию. См. также Допущения относительно инициализации глобальной переменной.

Дополнительные примеры инициализации сложных типов данных см. в эквивалентной проверке для локальных переменных. 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