C6201
Avertissement C6201 : dépassement de mémoire tampon pour <variable>, qui est probablement allouée à la pile : l'index <name> est en dehors des limites comprises entre <min> et <max>
Cet avertissement indique qu'un offset d'entier dans le tableau de pile spécifié dépasse les limites maximales de ce tableau. Ce défaut peut provoquer un comportement aléatoire ou des pannes.
Ce défaut est généralement dû à l'utilisation de la taille d'un tableau comme index dans le tableau. L'indexation de tableau en C/C++ étant de base zéro, l'index autorisé maximum dans un tableau est inférieur au nombre d'éléments du tableau.
Exemple
Le code suivant génère cet avertissement car l'index du tableau est en dehors de la plage valide :
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 :
void f( )
{
int buff[25];
for (int i=0; i < 25; i++)
{
buff[i]=0; // initialize i
// code ...
}
}