Freigeben über


Warnung C6054

Die Zeichenfolge 'Variable' ist möglicherweise nicht null beendet.

Hinweise

Diese Warnung gibt an, dass eine Funktion, für die eine Zeichenfolge mit Null beendet werden muss, eine nicht null beendete Zeichenfolge übergeben wurde. Eine Funktion, die erwartet, dass eine Zeichenfolge mit Null beendet wird, könnte über das Ende des Puffers hinaus nach der Null suchen. Dieser Fehler kann zu einem ausnutzenden Pufferüberlauffehler oder Absturz führen. Das Programm sollte sicherstellen, dass die übergebene Zeichenfolge mit einer Null endet.

Codeanalysename: MISSING_ZERO_TERMINATION2

Beispiel

Der folgende Code generiert diese Warnung:

// Warning C6054_bad.cpp
// Compile using: cl /W4 /EHsc /c /analyze C6054_bad.cpp
#include <sal.h>

void func( _In_z_ wchar_t* wszStr );

void g ( )
{
    wchar_t wcArray[200] = { 'h', 'e', 'l', 'l', 'o' };
    func(wcArray); // Warning C6054
}

Um diese Warnung zu korrigieren, wird wcArray null beendet, bevor die Funktion func() aufgerufen wird, wie im folgenden Beispielcode gezeigt:

// C6054_good.cpp
// Compile using: cl /W4 /EHsc /c /analyze C6054_good.cpp
#include <sal.h>

void func( _In_z_ wchar_t* wszStr );

void g ( )
{
    wchar_t wcArray[200] = { 'h', 'e', 'l', 'l', 'o', '\0' };
    func(wcArray); // OK
}

Siehe auch