From cppreference.com
[[noreturn]]voidquick_exit(intexit_code)noexcept;(since C++11)Causes normal program termination to occur without completely cleaning the resources.
Functions passed to
are called in reverse order of their registration. If an exception tries to propagate out of any of the functions,
is called. After calling the registered functions, calls std::_Exit(exit_code).
Functions passed to
are not called.
Parameters
exit_code - exit status of the program Example
Run this code
#include<cstdlib>#include<iostream>template<intN>voidquick_exit_handler(){std::cout<<"quick_exit handler #"<<N<<std::endl;// flush is intended}voidat_exit_handler(){std::cout<<"at_exit handler\n";}intmain(){if(std::at_quick_exit(quick_exit_handler<1>)||std::at_quick_exit(quick_exit_handler<2>)){std::cerr<<"Registration failed\n";returnEXIT_FAILURE;}std::atexit(at_exit_handler);// the handler will not be calledstructR{~R(){std::cout<<"destructor\n";}}resource;/*...*/std::quick_exit(EXIT_SUCCESS);std::cout<<"This statement is unreachable...\n";}Output:
quick_exit handler #2 quick_exit handler #1 See also