警告 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
}
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈