Почему new [-1] генерирует segfault, а new [-2] выбрасывает bad_alloc?
Я пытался проверитьbad_alloc
исключение, передавая некоторые отрицательные аргументыnew[]
, При прохождении небольших отрицательных чисел я получаю то, на что я надеялась -bad_alloc
, Однако при прохождении-1
Я вижу, что мой объект создается тысячи раз (я печатаю статический счетчик в конструкторе), и приложение завершается с использованием функции segfault.
new[]
преобразует целое число со знаком вsize_t
, так-1
это максимумsize_t
а также-2
этоmaximum - 1
и так далее.
Так почемуnew[]
выдает исключение при получении какого-то огромного числа, но пытается выделить при получении максимумsize_t
? В чем разница между1111...1
а также1111...0
заnew[]
? :)
Заранее спасибо!