Global object destructors are called std::exit. This function is called at C ++ runtime upon return main.
std::exit , , main. :.
struct A
{
A() { std::cout << std::this_thread::get_id() << '\n'; }
~A() { std::cout << std::this_thread::get_id() << '\n'; }
};
A a;
int main() {
std::thread([]() { std::exit(0); }).join();
}
:
140599080433472
140599061243648
, , - .
. std::exit std::atexit .