C6054
Aviso C6054: a seqüência de caracteres <variable>. pode não ser terminada em zero
Este aviso indica que uma função que requer a seqüência terminada em zero foi passada um diferente de zero terminada a seqüência de caracteres. Uma função que espera uma seqüência terminada em zero irá além do final do buffer para procurar o zero. Esse defeito pode causar um erro de saturação de buffer explorável ou a falha. O programa deve se certificar de que a seqüência de caracteres termina com um zero.
Exemplo
O código a seguir gera este aviso:
#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
}
Para corrigir esse aviso, null demitir v antes de chamar a função f conforme mostrado no exemplo de código seguir:
void g( )
{
wchar_t v[200];
v[0]= '\0';
f(v);
}