Avertissement C6383

Dépassement de mémoire tampon en raison de la conversion d’un nombre d’éléments en nombre d’octets : un nombre d’éléments est attendu pour le paramètre *parameter_name* dans l’appel à *function_name*

Cet avertissement indique qu’un nombre d’octets non constants est passé lorsqu’un nombre d’éléments est requis à la place.

Notes

En règle générale, cet avertissement se produit lorsqu’une variable est multipliée par le sizeof type. Ce problème entraîne probablement la copie de plus d’octets dans la mémoire tampon qu’il ne peut contenir.

Nom de l’analyse du code : ELEMENTS_TO_BYTES

Exemple

Le code suivant génère cet avertissement. wcsncpy autorise la n * sizeof(wchar_t) copie des caractères, mais la mémoire tampon ne peut contenir que des n caractères. Il convient de noter qu’il wcsncpy s’agit d’une fonction non sécurisée et ne doit pas être utilisée par C28719. La variante non sécurisée est utilisée ici uniquement à des fins de démonstration de cet avertissement :

void f(wchar_t* t, wchar_t* s, int n)
{
    wcsncpy (t, s, n*sizeof(wchar_t));
}

Le code suivant corrige cet avertissement en envoyant le nombre d’éléments au lieu du nombre d’octets :

void f( wchar_t* t, wchar_t* s, int n )
{
    wcsncpy (t, s, n);
}

Voir aussi