C6011

Mise à jour : novembre 2007

C6011

Avertissement C6011 : Suppression de la référence du pointeur NULL <nom>

Cet avertissement indique que la référence d'un pointeur null est en cours de suppression. Si la valeur du pointeur n'est pas valide, le résultat n'est pas défini.

Exemple

Le code suivant génère cet avertissement car un appel à malloc peut retourner null si la mémoire disponible est insuffisante :

#include <malloc.h>

void f( )
{ 
  char *p = ( char * ) malloc( 10 );
  *p = '\0';
  
  // code ...
 free( p );
}

Pour corriger cet avertissement, examinez le pointeur de la valeur null, comme indiqué dans le code suivant :

#include <malloc.h>
void f( )
{
  char *p = ( char * )malloc ( 10 );
  if ( p ) 
  {
    *p = '\0';
    // code ...
    
    free( p );
  }
}

Vous devez allouer de la mémoire dans la fonction où les paramètres sont annotés à l'aide de la propriété Null d'une condition Pre avant de supprimer la référence au paramètre. Le code suivant génère l'avertissement C6011 car une tentative est effectuée pour supprimer la référence à un pointeur null (pc) dans la fonction sans allouer au préalable de la mémoire :

#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f([Pre(Null=Yes)] char* pc)
{
  *pc='\0'; // warning C6011 - pc is null
  // code ...
}

Voir aussi

Concepts

Vue d'ensemble de l'annotation

Indirection and Address-of Operators

Référence

Null

NULL (CRT)

malloc

free