Warnung C6383
Pufferüberlauf aufgrund der Konvertierung einer Elementanzahl in eine Byteanzahl: Eine Elementanzahl wird für parameter
*parameter_name*
im Aufruf erwartet*function_name*
Diese Warnung gibt an, dass eine nicht konstante Byteanzahl übergeben wird, wenn stattdessen eine Elementanzahl erforderlich ist.
Hinweise
In der Regel tritt diese Warnung auf, wenn eine Variable mit dem sizeof
Typ multipliziert wird. Dieses Problem führt wahrscheinlich dazu, dass mehr Bytes in den Puffer kopiert werden, als sie enthalten können.
Codeanalysename: ELEMENTS_TO_BYTES
Beispiel
Der folgende Code generiert diese Warnung. wcsncpy
ermöglicht das n * sizeof(wchar_t)
Kopieren von Zeichen, der Puffer kann jedoch nur Zeichen enthalten n
. Es sollte beachtet werden, dass wcsncpy
es sich um eine unsichere Funktion handelt und nicht pro C28719 verwendet werden sollte. Die unsichere Variante wird hier nur zur Veranschaulichung dieser Warnung verwendet:
void f(wchar_t* t, wchar_t* s, int n)
{
wcsncpy (t, s, n*sizeof(wchar_t));
}
Der folgende Code korrigiert diese Warnung durch Senden der Elementanzahl anstelle der Byteanzahl:
void f( wchar_t* t, wchar_t* s, int n )
{
wcsncpy (t, s, n);
}