Udostępnij za pośrednictwem


C6201

Ostrzeżenie C6201: przepełnienie buforu dla <variable>, który jest prawdopodobnie stosu przydzielona: indeks <name> jest poza zakresem prawidłowym indeksem <min> do <max>

To ostrzeżenie wskazuje, że przesunięciem liczby całkowitej w tablicy określonej stosu przekracza maksymalne granice tablicy.Wada ten może spowodować losowe działania lub awarie.

Do częstych wyników tej wady jest przy użyciu rozmiaru tablicy jako indeks do tablicy.Ponieważ indeksowanie tablicy c i C++ jest od zera, maksymalny indeks prawne do tablicy jest jeden mniejsza niż liczba elementów tablicy.

Przykład

Poniższy kod generuje ostrzeżenie, ponieważ indeks tablicy jest prawidłowy zakres:

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

Aby poprawić Obydwa ostrzeżenia, użyj rozmiaru tablicy poprawne, jak pokazano w poniższym kodzie:

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