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


C6201

Обновлен: Ноябрь 2007

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 ...
  }
}