C6200

Aviso C6200: índice <name> está fora do intervalo de índice válido <min> Para <max> para o buffer de pilha não <variable>

Este aviso indica que um deslocamento inteiro na matriz especificada excede os limites máximo dessa matriz.Esse defeito pode causar comportamento aleatório ou travamentos.

Uma causa comum deste defeito está usando o tamanho de uma matriz como um índice na matriz.Como a indexação de matriz de C/C++ é baseado em zero, o índice máximo legal em uma matriz é uma menor que o número de elementos da matriz.

Exemplo

O código a seguir gera este aviso porque o for loop excede o intervalo de índice:

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

Para corrigir os dois avisos, use o tamanho da matriz correto conforme mostrado no código a seguir:

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