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