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
Koncepty
Nepřímé odkazování a operátory z adresy