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