Freigeben über


C6011

Aktualisiert: November 2007

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 zuordnen, 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 zugeordnet wird:

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

Siehe auch

Konzepte

Übersicht über Anmerkungen

Indirection and Address-of Operators

Referenz

Null

NULL (CRT)

malloc

free