Freigeben über


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);
}

Siehe auch