C6011
Ostrzeżenie C6011: usuwanie odwołania do pustego wskaźnika <name>
Ostrzeżenie to wskazuje, że usuwane jest odwołanie do pustego wskaźnika.Jeśli wartość wskaźnika jest nieprawidłowa, wynik jest nieokreślony.
Przykład
Poniższy kod generuje to ostrzeżenie, ponieważ wywołanie funkcji malloc może zwrócić wartość zerową, jeśli nie jest dostępna wystarczająca ilość pamięci:
#include <malloc.h>
void f( )
{
char *p = ( char * ) malloc( 10 );
*p = '\0';
// code ...
free( p );
}
Aby poprawić to ostrzeżenie, sprawdź czy wskaźnik nie zawiera wartości zerowej, jak pokazano w poniższym kodzie:
#include <malloc.h>
void f( )
{
char *p = ( char * )malloc ( 10 );
if ( p )
{
*p = '\0';
// code ...
free( p );
}
}
Przydziel pamięć wewnątrz funkcji, której parametry posiadają adnotację, za pomocą właściwości Null w warunku wstępnym, przed usunięciem odwołania do parametru.Poniższy kod generuje ostrzeżenie C6011, ponieważ wykonano próbę usunięcia odwołania do pustego wskaźnika (pc) wewnątrz funkcji, bez wcześniejszego przydzielenia pamięci:
#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;
void f([Pre(Null=Yes)] char* pc)
{
*pc='\0'; // warning C6011 - pc is null
// code ...
}
Zobacz też
Informacje
Koncepcje
Pośrednia i adres z operatorów