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 <sal.h>
using namespace vc_attributes;
void f([Pre(Null=Yes)] char* pc)
{
*pc='\0'; // warning C6011 - pc is null
// code ...
}
Использование malloc и free имеет много опасностей в терминах утечки памяти и исключений.Чтобы избежать все такие проблемы утечек и исключений, используйте механизмы, предоставляемые библиотекой стандартных шаблонов (STL) C++.Они включают shared_ptr, unique_ptr и vector.Дополнительные сведения см. в разделах Интеллектуальные указатели (современный C++) и Справочник по стандартной библиотеке C++.
См. также
Ссылки
Основные понятия
Операторы косвенного обращения и адреса операнда