Freigeben über


C6383

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
sizeof Operator