C6011
Warnung C6011: NULL-Zeiger <Name> wird dereferenziert.
Diese Warnung gibt an, dass ein NULL-Zeiger dereferenziert wird. Wenn der Zeigerwert ungültig ist, ist das Ergebnis nicht definiert.
Beispiel
Der folgende Code generiert diese Warnung, weil ein Aufruf von malloc ggf. NULL zurückgibt, wenn nicht genügend Speicher verfügbar ist:
#include <malloc.h>
void f( )
{
char *p = ( char * ) malloc( 10 );
*p = '\0';
// code ...
free( p );
}
Um diese Warnung zu korrigieren, untersuchen Sie den Zeiger auf einen NULL-Wert, wie im folgenden Code veranschaulicht:
#include <malloc.h>
void f( )
{
char *p = ( char * )malloc ( 10 );
if ( p )
{
*p = '\0';
// code ...
free( p );
}
}
Sie müssen Speicher innerhalb der Funktion belegen, deren Parameter mithilfe der Null-Eigenschaft in einer Vorbedingung vor dem Dereferenzieren des Parameters mit Anmerkungen versehen werden. Im folgenden Code wird die Warnung C6011 generiert, weil der Versuch unternommen wird, einen NULL-Zeiger (pc) in der Funktion zu dereferenzieren, ohne dass zuerst Speicher belegt wird:
#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f([Pre(Null=Yes)] char* pc)
{
*pc='\0'; // warning C6011 - pc is null
// code ...
}