C6054C6054

Ostrzeżenie C6054: zmienna <ciągu> nie może być zakończona zeremwarning C6054: string <variable> may not be zero-terminated

UwagiRemarks

To ostrzeżenie wskazuje, że funkcja, która wymaga, aby ciąg zakończony zerem został przekazano niezerowy ciąg zakończony niezerem.This warning indicates that a function that requires a zero-terminated string was passed a non-zero terminated string. Funkcja, która oczekuje, że ciąg zakończony zerem może wyszukać zero poza końcem buforu.A function that expects a zero-terminated string could look for the zero beyond the end of the buffer. Usterka może spowodować błąd przepełnienia buforu lub awarię.This defect might cause an exploitable buffer overrun error or crash. Program powinien upewnić się, że ciąg zakończony zerem ma wartość zerową.The program should make sure the string passed in ends with a zero.

PrzykładExample

Poniższy kod generuje to ostrzeżenie:The following code generates this 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, należy zakończyć wcArray zerowanie przed wywołaniem funkcji func() , jak pokazano w poniższym przykładowym kodzie:To correct this warning, null-terminate wcArray before calling function func() as shown in the following sample code:

// 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żSee also