Freigeben über


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 ...
}

Siehe auch

Referenz

NULL (CRT)

malloc

Frei

Konzepte

Dereferenzierung und Adresse-Von Operators

Weitere Ressourcen

Übersicht über Anmerkungen

Null