Sdílet prostřednictvím


C6011

Upozornění C6011: přesměrování ukazatele <name> s hodnotou NULL

Toto upozornění znamená, že došlo k pokusu o dereferenci ukazatele s hodnotou null.Pokud je hodnota ukazatele neplatná, výsledek je nedefinován.

Příklad

Následující kód vygeneruje toto varování, protože volání funkce malloc může vrátit hodnotu null, pokud není k dispozici dostatek paměti:

#include <malloc.h>

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

Chcete-li opravit toto varování, otestujte ukazatel na hodnotu null, jak je znázorněno v následujícím kódu:

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

Paměť uvnitř funkce jejíž parametry jsou označeny pomocí vlastnosti Null, je nutné alokovat v podmínce Pre před dereferencováním parametru.Následující kód vygeneruje varování C6011, protože se uvnitř funkce pokouší dereferencovat ukazatel null (pc) bez alokování paměti:

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

Viz také

Referenční dokumentace

NULL (CRT)

MALLOC

free

Koncepty

Nepřímé odkazování a operátory z adresy

Další zdroje

Přehled poznámek

Null