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