std::_Exit
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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; // деструктор этого объекта *не* будет вызван
// обработчик *не* будет вызван
const int result = std::atexit(atexit_handler);
if (result != 0) {
std::cerr << "регистрация atexit не удалась\n";
return EXIT_FAILURE;
}
std::cout << "тест" << std::endl; // сброс из std::endl
// должен быть здесь, иначе ничего не будет напечатано
std::_Exit(EXIT_FAILURE);
}
Вывод:
тест
Смотрите также
| вызывает аварийное завершение программы (без очистки) (функция) | |
| вызывает нормальное завершение программы с очисткой (функция) | |
Документация C по _Exit
| |