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 respuestas

Me 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

Respuestas a la pregunta(3)

Su respuesta a la pregunta