Se anula la referencia del puntero nulo válido en tamaño de operación [duplicado]
Esta pregunta ya tiene una respuesta aquí:
¿Por qué mi programa no falla cuando desreferenciado un puntero NULL dentro de malloc? 4 respuestasMe he encontrado con un fragmento de código que para mí debería bloquearse con unaFallo de segmentació, y sin embargo funciona sin problemas. El código en cuestión más la estructura de datos relevante es el siguiente (con el comentario asociado que se encuentra arriba):
typedef struct {
double length;
unsigned char nPlaced;
unsigned char path[0];
}
RouteDefinition* Alloc_RouteDefinition()
{
// NB: The +nBags*sizeof.. trick "expands" the path[0] array in RouteDefinition
// to the path[nBags] array
RouteDefinition *def = NULL;
return (RouteDefinition*) malloc(sizeof(RouteDefinition) + nBags * sizeof(def->path[0]));
}
¿Por qué funciona esto? Entiendo que eltamaño d elcarbonizars * se resolverá al tamaño del puntero en la arquitectura dada, pero no debería bloquearse y quemarse al desreferenciar unNULL
-¿puntero