Я попытался протестировать исключение 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[]?:)
Спасибо заранее!