В стандарте С++ предусмотрена функция std::set_terminate
, которая позволяет вам указать, какую функцию std::terminate
нужно вызвать. std::terminate
следует вызывать только в ужасных обстоятельствах и, конечно же, ситуации, описанные стандартом, когда они называются, являются ужасными (например, неперехваченное исключение). Когда std::terminate
действительно называется ситуацией, кажется, что это похоже на отсутствие памяти - на самом деле вы не можете очень разумно сделать.
Я читал, что он может быть использован для обеспечения освобождения ресурсов, но для большинства ресурсов это должно автоматически обрабатываться ОС при выходе из процесса (например, в файлах). Теоретически я могу видеть случай, если, скажем, вам нужно было отправить серверу определенное сообщение при выходе из-за сбоя. Но в большинстве случаев обработка ОС должна быть достаточной.
Когда используется обработчик terminate Right Thing (TM)?