警告 C6054

字符串“variable”不得为零终止

注解

此警告指示需要零终止字符串的函数已传递非零终止字符串。 预期零终止字符串的函数可能查找缓冲区末尾以外的零。 此缺陷可能会导致可利用的缓冲区溢出错误或崩溃。 程序应确保以零结尾传递的字符串。

代码分析名称:MISSING_ZERO_TERMINATION2

示例

以下代码将生成此警告:

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

若要更正此警告,在调用函数 func() 之前为 null 终止 wcArray,如以下示例代码所示:

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

另请参阅