C6054
Aktualisiert: November 2007
C6054
Warnung C6054: Die Zeichenfolge <Variable> darf nicht mit 0 (null) enden.
Diese Warnung gibt an, dass an eine Funktion, die eine mit 0 (null) endende Zeichenfolge erfordert, eine Zeichenfolge übergeben wurde, die nicht mit 0 (null) endet. Eine Funktion, die eine mit 0 (null) endende Zeichenfolge erwartet, sucht über das Ende des Puffers hinaus nach 0 (null). Dieser Fehler kann einen als Angriffspunkt geeigneten Pufferüberlauffehler oder einen Absturz verursachen. Das Programm sollte sicherstellen, dass die Zeichenfolge mit einer 0 (null) endet.
Beispiel
Der folgende Code generiert diese Warnung:
#include<codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f ([Pre(NullTerminated=Yes)] wchar_t* v);
void g ( )
{
wchar_t v[200];
f(v); // C6054 - v is not "null-terminated" before the call to f
}
Um diese Warnung zu korrigieren, legen Sie fest, dass v mit 0 (null) endet, bevor Sie die Funktion f aufrufen, wie im folgenden Beispielcode gezeigt:
void g( )
{
wchar_t v[200];
v[0]= '\0';
f(v);
}