C6383

Avertissement C6383 : dépassement de mémoire tampon suite à la conversion d'un nombre d'éléments en nombre d'octets : un nombre d'éléments est attendu pour le paramètre <numéro> dans l'appel à <fonction>

Cet avertissement indique qu'un nombre d'octets non constant est passé lorsqu'un nombre d'éléments est requis.En général, cela se produit lorsqu'une variable est multipliée par le sizeof d'un type, mais l'analyse de code suggère qu'un nombre d'éléments est requis.

Exemple

Le code suivant génère cet avertissement :

#include <string.h>

void f( wchar_t* t, wchar_t* s, int n )
{
  // code...
  wcsncpy (t, s, n*sizeof(wchar_t)); // warning 6383
  // code ...
}

Pour corriger cet avertissement, ne multipliez pas la variable par le sizeof d'un type comme indiqué dans le code suivant :

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

Le code suivant corrige cet avertissement en utilisant la fonction de manipulation de chaîne sécurisée :

void f(wchar_t* t, wchar_t* s, size_t n)
{
  // code...
  wcsncpy_s( t, sizeof(s), s, n );
  // code...
} 

Voir aussi

Référence

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l

opérateur sizeof de