Compartilhar via


C6011

Aviso C6011: desreferência de ponteiro nulo <nome>

Este aviso indica que um ponteiro nulo referência está sendo cancelado.Se o valor do ponteiro for inválido, o resultado é indefinido.

Exemplo

O código a seguir gera este aviso porque uma telefonar para malloc pode retornar nula se não há memória suficiente disponível:

#include <malloc.h>

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

Para corrigir esse aviso, examine o ponteiro para um valor nulo sistema autônomo mostra o código a seguir:

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

Você deve alocar memória dentro da função cujos parâmetros são anotados usando a propriedade nulo em uma condição pré antes de cancelar a referência do parâmetro.O código a seguir gera aviso C6011 porque uma tentativa de cancelar a referência de um ponteiro nulo (pc) dentro da função sem primeira alocar memória:

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

Consulte também

Conceitos

Visão geral de anotação

Indirection and operadores Endereço-of

Referência

Null

NULL (CRT)

malloc

livre