C6200
Обновлен: Ноябрь 2007
C6200
Предупреждение C6200. Индекс <имя> находится вне диапазона от <минимум> до <максимум> для буфера <переменная> вне стека
Это предупреждение указывает, что смещение целого числа в указанном массиве превышает максимальные границы данного массива. Данная ошибка может привести к непредвиденному поведению или сбоям.
Одной из наиболее распространенных причин этого дефекта является использование размера массива в качестве верхней границы индекса массива. Поскольку в C/C++ индексация массивов начинается с нуля, максимально допустимый индекс массива на единицу меньше количества его элементов.
Пример
В следующем коде создается данное предупреждение из-за превышения циклом for границы массива:
int buff[14]; // array of 0..13 elements
void f()
{
for (int i=0; i<=14;i++) // i exceeds the index
{
buff[i]= 0; // warning C6200
// code...
}
}
Для устранения этого предупреждения используйте правильный размер массива, как указано в следующем коде:
int buff[14]; // array of 0..13 elements
void f()
{
for ( int i=0; i < 14; i++) // loop stops when i < 14
{
buff[i]= 0; // initialize buffer
// code...
}
}