Compartir a través de


C6011

Actualización: noviembre 2007

C6011

Advertencia C6011: Eliminando las referencias del puntero NULL <nombre>

Esta advertencia indica que se eliminan las referencias de un puntero nulo. 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 eliminar las referencias del parámetro. El código siguiente genera la advertencia C6011 porque se intenta eliminar referencias de un puntero nulo (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

Conceptos

Información general sobre anotaciones

Indirection and Address-of Operators

Referencia

Null

NULL (CRT)

malloc

free