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