std::abort

From cppreference.com
< cpp‎ | utility‎ | program
Utilities library
Defined in header <cstdlib>
void abort();
(until C++11)
[ [noreturn] ] void abort( ) noexcept ;
(since C++11)

Causes abnormal program termination unless SIGABRT is being caught by a signal handler passed to std::signal

Destructors of variables with automatic, thread local(since C++11) and static storage durations are not called. Functions registered with std::atexit() and std::at_quick_exit (since C++11)

Parameters

(none)

Return value

None because it does not return.

Exceptions

Throws nothing.

Notes

POSIX specifies that the abort() function overrides blocking or ignoring the SIGABRT signal.

Some compiler intrinsics, e.g. __builtin_trap (gcc, clang, and icc) or __fastfail/__debugbreak

Example

#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";
}

Output:

Tester ctor
Tester ctor
SIGABRT received

See also

causes normal program termination with cleaning up
(function)
registers a function to be called on std::exit() invocation
(function)
(C++11)
causes quick program termination without completely cleaning up
(function)
(C++11)
registers a function to be called on std::quick_exit invocation
(function)
sets a signal handler for particular signal
(function)
function called when exception handling fails
(function)
C documentation for abort