Чтобы было достаточно памяти (EMERG_MEM_SZ) для функций деструкторов классов и т. Д., И для корректного выхода из программы?
Прежде чем пытаться выделить такую память для деструкторов, вы должны сначалауметь аргументировать некоторые причины, по которым ваши деструкторы должны были бы выделять динамическую память в первую очередь.Такое требование - серьезный красный флаг в отношении дизайна класса.
Нужно ли откладывать какое-то аварийное запоминающее устройство при выходе из строя нового?
Не обязательно.Во-первых, изящный выход часто возможен без выделения динамической памяти.Во-вторых, программа, работающая в рамках защиты операционной системы, не обязательно должна корректно завершаться в такой ужасной ситуации, как нехватка памяти.
PS Некоторые системы (в частности, Linux, с определенной конфигурацией)) "перегрузить" память и никогда не выбрасывать std::bad_alloc
.Вместо этого выделение всегда выполняется успешно, физическая память не выделяется до тех пор, пока к ней фактически не осуществляется доступ, и если в это время нет доступной памяти, процесс (или другой процесс) уничтожается для освобождения некоторой памяти.На такой системе в C ++ нет способа восстановиться после нехватки памяти.