C6201

Aviso C6201: saturação de buffer para <variable>, que é possivelmente a pilha alocada: índice <name> está fora do intervalo de índice válido <min> Para <max>

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

Uma causa comum deste defeito está usando um tamanho de 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 índice de matriz está fora do intervalo válido:

void f( )
{
  int buff[25];
  for (int i=0; i <= 25; i++) // i exceeds array bound
  {
    buff[i]=0; // initialize i
    // code ...
  }
}

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

void f( )
{
  int buff[25];
  for (int i=0; i < 25; i++)
  {
    buff[i]=0; // initialize i
    // code ...
  }
}