Compartir a través de


C6011

Advertencia C6011: Desreferenciación del puntero NULL <nombre>

Esta advertencia indica que se desreferencia un puntero NULL. Si el valor de puntero no es válido, el resultado es indefinido.

Ejemplo

El código siguiente genera esta advertencia porque una llamada a malloc podría devolver null si la memoria disponible no es suficiente:

#include <malloc.h>

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

Para corregir esta advertencia, examine el puntero para el valor nulo como se muestra en el código siguiente:

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

Debe asignar la memoria dentro de la función cuyos parámetros se anotan utilizando la propiedad Null en una condición Pre antes de desreferenciar el parámetro. El código siguiente genera la advertencia C6011 porque se intenta desreferenciar un puntero NULL (pc) dentro de la función sin asignar la memoria antes:

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

Vea también

Referencia

Null

NULL (CRT)

malloc

free

Conceptos

Información general sobre anotaciones

Indirection and Address-of Operators