C6412C6412

avertissement C6412 : dépassement lors de l’écriture dans la mémoire tampon de mémoire tampon.warning C6412: Potential buffer overrun while writing to buffer. La taille accessible en écriture est write_size octets, mais write_index octets peuvent être écrits.The writable size is write_size bytes, but write_index bytes may be written.

Cet avertissement indique que la valeur de l’index qui est utilisé pour écrire dans la mémoire tampon peut dépasser la taille accessible en écriture de la mémoire tampon.This warning indicates that the value of the index that is used to write to the buffer can exceed the writeable size of the buffer.

Étant donné que l’outil d’analyse de code signale cet avertissement lorsqu’il ne peut pas réduire une expression complexe qui représente la taille de mémoire tampon, ou l’index utilisé pour accéder à la mémoire tampon, cet avertissement peut être signalé dans erreur.Because the code analysis tool reports this warning when it cannot reduce a complex expression that represents the buffer size, or the index used to access the buffer, this warning might be reported in error.

ExempleExample

Le code suivant génère cet avertissement.The following code generates this warning.

char *a = new char[strlen(InputParam)];
a[10] = 1;
delete[] a;

Le code suivant corrige cette erreur.The following code corrects this error.

int i = strlen(InputParam);
char *a = new char[i];
if (i > 10) a[10] = 1;
delete[] a;