C6054
更新:2007 年 11 月
警告 C6054:字符串 <variable> 不能以零结尾
此警告意味着向一个需要以零结尾的字符串的函数传递了一个不是以零结尾的字符串。接受以零结尾的字符串的函数将超出缓冲区的末尾来查找零。此缺陷可能会导致可利用的缓冲区溢出错误或系统崩溃。程序应当确保字符串以零结尾。
示例
下面的代码生成此警告:
#include<codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f ([Pre(NullTerminated=Yes)] wchar_t* v);
void g ( )
{
wchar_t v[200];
f(v); // C6054 - v is not "null-terminated" before the call to f
}
若要更正此警告,请在调用函数 f 之前在 v 的末尾添加 NULL 终止符,如下面的代码示例所示:
void g( )
{
wchar_t v[200];
v[0]= '\0';
f(v);
}