Namespaces
Variants

std::abort

С сайта 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)
Функции сравнения целых чисел
(C++20)(C++20)(C++20)    
(C++20)
Операции с типами и обмен
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Типы общей лексики
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
Определён в заголовке <cstdlib>
void abort();
(до C++11)
[[noreturn]] void abort() noexcept;
(начиная с C++11)

Вызывает аварийное завершение программы, если только SIGABRT не перехватывается обработчиком сигнала, переданным в std::signal, и этот обработчик не возвращает управление.

Деструкторы переменных с автоматической, локальной для потока(начиная с C++11) и статической продолжительностью хранения не вызываются. Функции, зарегистрированные с помощью std::atexit() и std::at_quick_exit(начиная с C++11), также не вызываются. Закрытие открытых ресурсов, таких как файлы, определяется реализацией. В среду выполнения возвращается определённый реализацией статус, указывающий на неуспешное выполнение.

Возвращаемое значение

Ничего, потому что не возвращает.

Исключения

Ничего не выбрасывает.

Примечания

POSIX уточняет, что функция abort отменяет блокировку или игнорирование сигнала SIGABRT.

Некоторые встроенные функции компилятора, например __builtin_trap (gcc, clang и icc) или __fastfail/__debugbreak (msvc), могут использоваться для максимально быстрого завершения программы.

Пример

#include <csignal>
#include <cstdlib>
#include <iostream>

class Tester
{
public:
    Tester()  { std::cout << "Tester ctor\n"; }
    ~Tester() { std::cout << "Tester dtor\n"; }
};

Tester static_tester; // Destructor not called

void signal_handler(int signal)
{
    if (signal == SIGABRT)
        std::cerr << "SIGABRT received\n";
    else
        std::cerr << "Unexpected signal " << signal << " received\n";
    std::_Exit(EXIT_FAILURE);
}

int main()
{
    Tester automatic_tester; // Destructor not called

    // Setup handler
    auto previous_handler = std::signal(SIGABRT, signal_handler);
    if (previous_handler == SIG_ERR)
    {
        std::cerr << "Setup failed\n";
        return EXIT_FAILURE;
    }

    std::abort(); // Raise SIGABRT
    std::cout << "This code is unreachable\n";
}

Результат:

Tester ctor
Tester ctor
SIGABRT received

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

вызывает нормальное завершение программы с очисткой ресурсов
(функция)
регистрирует функцию для вызова при std::exit() вызове
(функция)
(C++11)
вызывает быстрое завершение программы без полной очистки ресурсов
(функция)
регистрирует функцию для вызова при std::quick_exit вызове
(функция)
устанавливает обработчик сигнала для конкретного сигнала
(функция)
функция, вызываемая при неудачной обработке исключения
(функция)