РЕДАКТИРОВАТЬ: Другие комментаторы указали несколько интересных сценариев.Я добавляю их в свой ответ для полноты картины.
Случай 1: Недостаточно памяти
Насколько я понимаю, выдается bad_alloc всякий раз, когда операторам new и new [] не удается выделить память для объекта или переменной.Это может произойти, если вы обновили несколько объектов и забыли удалить их до того, как они выйдут из области видимости (т. Е. Ваш код просачивается как сумасшедший).
Случай 2: выделение огромных объемов памяти одним махом
Выделение большого фрагмента памяти, как в случае матрицы двойных чисел 1000 x 1000 x 1000, возможно, завершится неудачей, поскольку для этого требуется один блок из этогоразмер.
Возможно, доступно несколько свободных блоков памяти, но ни один из них не достаточно велик.
Случай 3: Передача недопустимого значения новому []
bad_alloc выдается, если вы передаете отрицательное значение в качестве его параметра.