C6383
Aggiornamento: novembre 2007
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