C6200
ostrzeżenie C6200: indeks <name> jest poza prawidłowym zakresem indeksu od <min> do <max> dla buforu, który nie jest stosem <variable>
To ostrzeżenie wskazuje, że przesunięcie o liczbę całkowitą w określonej tablicy przekracza maksymalne granice tablicy.Defekt ten może spowodować losowe zachowanie lub awarie.
Jedną z częstych przyczyn tego defektu jest użycie rozmiaru tablicy jako indeks w tablicy.Ponieważ indeksowanie tablic w C i C++ zaczyna się od zera, maksymalny poprawny indeks w tablicy jest jeden mniejszy niż liczba elementów w tablicy.
Przykład
Poniższy kod generuje to ostrzeżenie, ponieważ pętla for przekracza zakres indeksu:
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...
}
}
Aby poprawić oba ostrzeżenia, należy użyć prawidłowego rozmiaru tablicy, jak pokazano w poniższym kodzie:
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...
}
}