C6201C6201

avertissement C6201 : saturation de la mémoire <variable >, qui est probablement allouée à la pile : index <nom > est en dehors de la plage d’index valide <min > à <max >warning C6201: buffer overrun for <variable>, which is possibly stack allocated: index <name> is out of valid index range <min> to <max>

Cet avertissement indique qu’un offset d’entier dans le tableau de pile spécifié dépasse les limites maximales de ce tableau.This warning indicates that an integer offset into the specified stack 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 taille d’un tableau en tant qu’index dans le tableau.One common cause of this defect is using an array's size 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 l’index de tableau est en dehors de la plage valide :The following code generates this warning because the array index is out of the valid range:

void f( )
{
  int buff[25];
  for (int i=0; i <= 25; i++) // i exceeds array bound
  {
    buff[i]=0; // initialize i
    // code ...
  }
}

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

void f( )
{
  int buff[25];
  for (int i=0; i < 25; i++)
  {
    buff[i]=0; // initialize i
    // code ...
  }
}