C6200C6200

avertissement C6200 : index <nom > est en dehors de la plage d’index valide <min > à <max > pour la mémoire tampon de pile non <variable >warning C6200: index <name> is out of valid index range <min> to <max> for non-stack buffer <variable>

Cet avertissement indique qu’un offset d’entier dans le tableau spécifié dépasse les limites maximales de ce tableau.This warning indicates that an integer offset into the specified array exceeds the maximum bounds of that array. Ce problème peut entraîner un comportement aléatoire ou des pannes.This defect might cause random behavior or crashes.

Une des causes courantes de ce problème sont à l’aide de la taille d’un tableau en tant qu’index dans le tableau.One common cause of this defect is using the size of an array as an index into the array. Étant donné que l’indexation de tableau C/C++ est de base zéro, l’index autorisé maximum dans un tableau est une inférieur au nombre d’éléments de tableau.Because C/C++ array indexing is zero-based, the maximum legal index into an array is one less than the number of array elements.

ExempleExample

Le code suivant génère cet avertissement, car la for boucle dépasse la plage d’index :The following code generates this warning because the for loop exceeds the index range:


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

Pour corriger les deux avertissements, utilisez la taille de tableau correcte comme indiqué dans le code suivant :To correct both warnings, use correct array size as shown in the following code:

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