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);
}

Consulte também

Referência

C6053

NullTerminated

Conceitos

Visão geral de anotação