¿Por qué nuevo [-1] genera segfault, mientras que nuevo [-2] arroja bad_alloc?

Intenté probarbad_alloc excepción pasando algunos argumentos negativos anew[]. Al pasar pequeños números negativos obtengo lo que esperaba: unabad_alloc. Sin embargo, al pasar-1, Puedo ver que mi objeto se construye miles de veces (imprimo un contador estático en el constructor) y la aplicación termina con segfault.

new[] convierte un entero con signo asize_t, entonces-1 es el máximo desize_t y-2 es elmaximum - 1 y así

Entonces por quénew[] lanza una excepción cuando recibe un número enorme, pero intenta asignar cuando recibe el máximo desize_t? Cuál es la diferencia entre1111...1 y1111...0 paranew[]? :)

¡Gracias por adelantado

Respuestas a la pregunta(2)

Su respuesta a la pregunta