Condividi tramite


C6383

avviso C6383: sovraccarico del buffer causato dalla conversione di un conteggio di elementi in un conteggio di byte: per il parametro <numero> nella chiamata a <funzione> è previsto un conteggio di elementi

L'avviso indica che è stato passato un conteggio di byte non costanti laddove è richiesto un conteggio di elementi. Solitamente ciò si verifica quando una variabile viene moltiplicata per il valore sizeof di un tipo, ma l'analisi del codice suggerisce che è necessario un conteggio degli elementi.

Esempio

Il codice seguente genera questo avviso:

#include <string.h>

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

Per risolvere il problema, non moltiplicare la variabile per il valore sizeof di un tipo, come illustrato nel codice seguente:

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

Il codice seguente risolve il problema utilizzando la funzione protetta di modifica delle stringhe:

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

Vedere anche

Riferimenti

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l

sizeof Operator