Condividi tramite


C6011

avviso C6011: dereferenziazione del puntatore NULL <nome>

L'avviso indica la dereferenziazione di un puntatore null.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 dereferenziare il parametro.Il codice seguente genera l'avviso C6011 perché effettua un tentativo dereferenziare 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

Riferimenti

NULL (CRT)

malloc

free

Concetti

Riferimento indiretto e l'Operators

Altre risorse

Cenni preliminari sull'annotazione

Null