¿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