Intenté probar la excepción bad_alloc
pasando algunos argumentos negativos al new[]
. Cuando paso pequeños números negativos, obtengo lo que esperaba: un bad_alloc
. Sin embargo, al pasar -1
, puedo ver que mi objeto se construye miles de veces (imprimo el contador estático en el constructor) y la aplicación finaliza con segfault.¿Por qué new [-1] genera segfault, mientras que new [-2] arroja bad_alloc?
new[]
conversos entero de a size_t
, por lo -1
es el máximo de size_t
y -2
es el maximum - 1
y así sucesivamente.
Entonces, ¿por qué new[]
arroja una excepción al recibir un gran número, pero trata de asignar al recibir el máximo de size_t
? ¿Cuál es la diferencia entre 1111...1
y 1111...0
para new[]
? :)
Gracias de antemano!
Qué versión de compilador/compilador/OS/... – xanatos
Esa vez perdí las respuestas porque StackOverflow no me envía ninguna notificación, y ahora no puedo reproducir el problema ... Lamento no haber generado volcados del núcleo y no lo investigué ... Ahora no puedo reproducir el problema - pasar -1 a 'nuevo' parece funcionar y arroja una excepción, mientras que pasar max int asigna muchos objetos pero no segfault. Estoy empezando a pensar que el problema estaba en otro lugar ... Doy un plus a Mystical por su intento. – flyjohny