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