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