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:
std::exit()
std::quick_exit()
std::_Exit()
std::abort()
std::terminate()
std::unexpected()
(deprecated)
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.
Corrections, additions, updates and layout improvements will be gladly accepted.