◐ Shell
clean mode source ↗

std::_Exit — cppreference.com

Материал из 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);
}

Вывод:

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