/Terminators

Hasta la vista, baby!

BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Terminators little-terminator

A GraphViz diagram that shows both normal and unexpected program termination flows in C++.

There are multiple ways a C++ program may terminate. These include both normal and unexpected termination.
This GraphViz diagram shows the program termination flows as defined by the standard.

Standard C++ program terminators include:

For completeness, Microsoft specific terminators:

Most of the functions have subtle contexts, conditions and effects that should be considered by checking their documentation.
The diagram does not make an explicit distinction between the C and C++ versions of some of the functions (e.g. exit()).
The orange path shows normal program termination.

The call graph

Corrections, additions, updates and layout improvements will be gladly accepted.