C6201
Aggiornamento: novembre 2007
C6201
avviso C6201: sovraccarico del buffer per <variabile>, probabilmente allocato nello stack, per la chiamata a <name>: la lunghezza <min> supera la dimensione del buffer <max>
L'avviso indica che un offset di integer nella matrice di stack 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 l'indice di matrice non è compreso nell'intervallo valido:
void f( )
{
int buff[25];
for (int i=0; i <= 25; i++) // i exceeds array bound
{
buff[i]=0; // initialize i
// code ...
}
}
Per risolvere i problemi, utilizzare la dimensione corretta della matrice, come illustrato nel codice seguente:
void f( )
{
int buff[25];
for (int i=0; i < 25; i++)
{
buff[i]=0; // initialize i
// code ...
}
}