std::_Exit
Материал из cppreference.com
Определено в заголовочном файле <cstdlib> | ||
[[noreturn]]void _Exit(int exit_code ); | (начиная с C++11) | |
Вызывает обычное завершение программы без полной очистки ресурсов.
Деструкторы переменных с автоматической, потоковой и статической длительностью хранения не вызываются. Функции, переданные в std::at_quick_exit() и std::atexit(), не вызываются. Закрытие открытых ресурсов, таких как файлы, определяется реализацией.
Если exit_code
равен 0 или EXIT_SUCCESS, определяемый реализацией код, указывающий на успешное завершение, возвращается в среду выполнения. Если exit_code
равен EXIT_FAILURE, возвращается определяемый реализацией код, указывающий на неудачное завершение. В других случаях возвращается значение статуса, определяемое реализацией.
Содержание |
[править]Параметры
exit_code | — | статус выхода из программы |
[править]Возвращаемое значение
(нет)
[править]Пример
Запустить этот код
#include <iostream> class Static {public: ~Static(){std::cout<<"Static деструктор\n";}}; class Local {public: ~Local(){std::cout<<"Local деструктор\n";}}; Static static_variable;// деструктор этого объекта *не* будет вызван void atexit_handler(){std::cout<<"обработчик atexit\n";} int main(){ Local local_variable;// деструктор этого объекта *не* будет вызван // обработчик *не* будет вызванconstint result =std::atexit(atexit_handler); if(result !=0){std::cerr<<"регистрация atexit не удалась\n";returnEXIT_FAILURE;} std::cout<<"тест"<<std::endl;// сброс из std::endl// должен быть здесь, иначе ничего не будет напечатано std::_Exit(EXIT_FAILURE);}
Вывод:
тест
[править]Смотрите также
вызывает аварийное завершение программы (без очистки) (функция) | |
вызывает нормальное завершение программы с очисткой (функция) | |
Документация C по _Exit |