Condividi tramite


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