C6011
Aggiornamento: novembre 2007
C6011
avviso C6011: risoluzione dei riferimenti del puntatore NULL <nome>
L'avviso indica che i riferimenti a un puntatore null sono stati risolti. Se il valore del puntatore non è valido, il risultato sarà indefinito.
Esempio
Nel codice seguente l'avviso viene generato perché una chiamata a malloc potrebbe restituire null se la memoria disponibile non è sufficiente:
#include <malloc.h>
void f( )
{
char *p = ( char * ) malloc( 10 );
*p = '\0';
// code ...
free( p );
}
Per risolvere il problema, esaminare il puntatore per il valore null come riportato nel codice seguente:
#include <malloc.h>
void f( )
{
char *p = ( char * )malloc ( 10 );
if ( p )
{
*p = '\0';
// code ...
free( p );
}
}
È necessario allocare la memoria all'interno della funzione i cui parametri sono annotati mediante la proprietà Null in una precondizione prima di risolvere i riferimenti al parametro. Il codice seguente genera l'avviso C6011 perché effettua un tentativo di risolvere i riferimenti a un puntatore null (pc) all'interno della funzione senza che prima sia stata allocata la memoria:
#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f([Pre(Null=Yes)] char* pc)
{
*pc='\0'; // warning C6011 - pc is null
// code ...
}
Vedere anche
Concetti
Cenni preliminari sull'annotazione
Indirection and Address-of Operators