C6383
Warnung C6383: Pufferüberlauf aufgrund der Konvertierung einer Elementanzahl in eine Byteanzahl: Für den <Nummer>-Parameter im Aufruf von <Funktion> wird eine Elementanzahl erwartet.
Diese Warnung gibt an, dass eine nicht konstante Byteanzahl übergeben wird, obwohl eine Elementanzahl erforderlich ist.Dazu kommt es i. d. R., wenn eine Variable mit sizeof eines Typs multipliziert wird, laut Codeanalyse jedoch eine Elementanzahl erforderlich ist.
Beispiel
Der folgende Code generiert diese Warnung:
#include <string.h>
void f( wchar_t* t, wchar_t* s, int n )
{
// code...
wcsncpy (t, s, n*sizeof(wchar_t)); // warning 6383
// code ...
}
Um diese Warnung zu korrigieren, multiplizieren Sie die Variable nicht mit sizeof eines Typs, wie im folgenden Code dargestellt:
void f( wchar_t* t, wchar_t* s, int n )
{
// code
wcsncpy (t, s, n);
// code ...
}
Im folgenden Code wird diese Warnung mithilfe der Funktion zur sicheren Zeichenfolgenbearbeitung korrigiert:
void f(wchar_t* t, wchar_t* s, size_t n)
{
// code...
wcsncpy_s( t, sizeof(s), s, n );
// code...
}
Siehe auch
Referenz
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l