Namespaces
Variants

std::_Exit

Начиная с ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования возможностей библиотеки (C++20)
Программные утилиты
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
 
 
Определён в заголовке <cstdlib>
[[noreturn]] void _Exit( int exit_code ) noexcept;
(начиная с C++11)

Вызывает нормальное завершение программы без полной очистки ресурсов.

Деструкторы переменных с автоматическим, потоковым и статическим временем хранения не вызываются. Функции, переданные в std::at_quick_exit() или std::atexit(), не вызываются. Закрываются ли открытые ресурсы, такие как файлы, определяется реализацией.

Если exit_code равно 0 или EXIT_SUCCESS, в среду выполнения возвращается определяемый реализацией статус, указывающий на успешное завершение. Если exit_code равно EXIT_FAILURE, возвращается определяемый реализацией статус, указывающий на неуспешное завершение. В остальных случаях возвращается определяемое реализацией значение статуса.

Автономная реализация обязана предоставлять std::_Exit.

(начиная с C++23)

Параметры

exit_code - статус завершения программы

Примечания

Хотя _Exit требуется быть доступным в автономной реализации начиная с C++23, он не требуется для автономной реализации на языке C.

Пример

#include <iostream>
class Static
{
public:
    ~Static() 
    {
        std::cout << "Static dtor\n";
    }
};
class Local
{
public:
    ~Local() 
    {
        std::cout << "Local dtor\n";
    }
};
Static static_variable; // деструктор этого объекта *не* будет вызван
void atexit_handler()
{
    std::cout << "atexit handler\n";
}
int main()
{
    Local local_variable; // деструктор этого объекта *не* будет вызван
    // обработчик *не* будет вызван
    const int result = std::atexit(atexit_handler);
    if (result != 0)
    {
        std::cerr << "atexit registration failed\n";
        return EXIT_FAILURE;
    }
    std::cout << "test" << std::endl; // сброс буфера от std::endl
        // должен быть здесь, иначе ничего не будет выведено
    std::_Exit(EXIT_FAILURE);
}

Вывод:

test

Смотрите также

вызывает аварийное завершение программы (без очистки)
(функция)
вызывает нормальное завершение программы с очисткой
(функция)