Udostępnij za pośrednictwem


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