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


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