Udostępnij za pośrednictwem


Ostrzeżenie C6054

Ciąg "zmienna" może nie być zakończony zero.

Uwagi

To ostrzeżenie wskazuje, że funkcja, która wymaga ciągu o zerowym zakończeniu, została przekazana bez zera zakończony ciąg. Funkcja, która oczekuje ciągu bez zakończenia, może wyszukać zero poza końcem buforu. Ta usterka może spowodować błąd przekroczenia buforu możliwego do wykorzystania lub awarię. Program powinien upewnić się, że ciąg przekazany kończy się zerem.

Nazwa analizy kodu: MISSING_ZERO_TERMINATION2

Przykład

Następujący kod generuje to ostrzeżenie:

// 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
}

Aby poprawić to ostrzeżenie, przed wywołaniem funkcji func() null zakończwcArray, jak pokazano w poniższym przykładowym kodzie:

// 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
}

Zobacz też