C6200
avviso C6200: l'indice <nome> non è compreso nell'intervallo valido degli indici <min> - <max> per il buffer <variabile> non allocato nello stack
L'avviso indica che un offset di integer nella matrice specificata supera il limite massimo della matrice.L'errore potrebbe causare un comportamento casuale o arresti anomali del sistema.
Una causa comune di errore è l'utilizzo della dimensione di una matrice come indice nella matrice.Dal momento che l'indicizzazione delle matrici nel linguaggio C/C++ è basata su zero, l'indice massimo valido in una matrice è inferiore di un'unità rispetto al numero degli elementi della matrice.
Esempio
Il codice seguente genera questo avviso in quanto il ciclo for supera l'intervallo degli indici:
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...
}
}
Per risolvere i problemi, utilizzare la dimensione della matrice corretta come illustrato nel codice seguente:
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...
}
}