Поделиться через


C6011

Обновлен: Ноябрь 2007

C6011

Предупреждение C6011: разыменование указателя NULL <имя>.

Это предупреждение указывает на разыменование указателя null. Если значение указателя недопустимо, результат становится неопределенным.

Пример

Это предупреждение возникает в следующем коде, поскольку вызов malloc может вернуть значение null, если недостаточно памяти:

#include <malloc.h>

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

Чтобы устранить это предупреждение, проверьте указатель на предмет значений null, как показано в следующем коде:

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

Перед разыменованием параметра нужно выделить память внутри функции, для аннотации которых используется свойство Null в условии Pre. В следующем коде предупреждение C6011 возникает из-за попытки разыменования указателя null (pc) внутри функции без предварительного выделения памяти:

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

См. также

Основные понятия

Общие сведения о заметках

Indirection and Address-of Operators

Ссылки

Null

NULL (CRT)

malloc

free