Udostępnij za pośrednictwem


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

WARTOŚĆ NULL (CRT)

funkcja malloc

free

Koncepcje

Pośrednia i adres z operatorów

Inne zasoby

Omówienie adnotacji

Wartość NULL