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


Неинициализированная переменная (uninitialized variable)— это такая переменная, которой не было присвоено начальное значение.

Использование неинициализированных переменных схоже с использованием неинициализированной памяти и может приводить к ошибкам разного рода в процессе работы программы.

Примером может служить такой код:

int Sum(int n)
{
  int sum, i;
 
  for (i = 0; i < n; i++)
  {
    sum = sum + 1;
  }
 
  return sum;
}

Переменной 'sum' не присвоено начального значения, и она содержит "мусор". В отдельных случаях, при определенном везении, там может оказаться и нулевое значение. Тогда функция будет работать правильно. Но в общем случае, результат работы функции непредсказуем. Коварство подобных ошибок в том, что программа может долгое время вести себя правильно. А потом, после смены компилятора, небольшого рефакторинга и других изменений, начать выдавать ошибочные результаты. Более того, при каждом запуске программа может вести себя по-разному.

Для предотвращения подобных ошибок в языке программирования Си++ лучше инициализировать все переменные начальным значением непосредственно при объявлении. Объявлять переменные лучше всего непосредственно перед использованием, когда уже известны их начальные значения. Тогда работоспособный пример кода будет выглядеть так:

int Sum(int n)
{
  int sum = 0;
 
  for (int i = 0; i < n; i++)
  {
    sum = sum + 1;
  }
 
  return sum;
}

Анализатор PVS-Studio умеет ряд диагностик, которые позволяют обнаруживать некоторые ошибки, связанные с использование неинициализированных переменных. Например: V573, V614.

Библиографический список


Найденные ошибки

Проверено проектов
361
Собрано ошибок
13 417

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;