C6054
avviso C6054: la stringa <variabile> non può terminare con zero
L'avviso indica che a una funzione che richiede una stringa che termina con zero è stata passata una stringa che non termina con zero. Una funzione che prevede una stringa che termina con zero supererà la fine del buffer alla ricerca dello zero. Questo errore potrebbe provocare un arresto anomalo o un errore di sovraccarico del buffer. Il programma dovrebbe accertarsi che la stringa termini con zero.
Esempio
Il codice seguente genera questo avviso:
#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
}
Per risolvere il problema, terminare v con un valore null prima di chiamare la funzione f, come illustrato nel seguente codice di esempio:
void g( )
{
wchar_t v[200];
v[0]= '\0';
f(v);
}