Поделиться через


C6201

Предупреждение C6201: переполнение буфера для <переменной>, которой, возможно, выделен стек: индекс <имя> находится вне допустимого диапазона индекса от <минимум> до <максимум>.

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

Одной из наиболее распространенных причин этой ошибки является использование размера массива в качестве верхней границы индекса массива. Поскольку в C/C++ индексация массивов начинается с нуля, максимально допустимый индекс массива на единицу меньше количества его элементов.

Пример

В следующем коде в результате превышения индексом допустимого диапазона создается данное предупреждение:

void f( )
{
  int buff[25];
  for (int i=0; i <= 25; i++) // i exceeds array bound
  {
    buff[i]=0; // initialize i
    // code ...
  }
}

Для устранения этого предупреждения используйте правильный размер массива, как указано в следующем коде:

void f( )
{
  int buff[25];
  for (int i=0; i < 25; i++)
  {
    buff[i]=0; // initialize i
    // code ...
  }
}