Почему 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[]? :)

Заранее спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос