Интересно, может ли быть уверен порядок между уничтожением глобального объекта и atexit в С++
У меня есть глобальный объект и зарегистрируйте функцию atexit, как показано ниже:
static MyClass g_class;
void onExit()
{
// do some destruction
}
int main()
{
atexit(onExit);
return 0;
}
Я обнаружил, что onExit() вызывается перед MyClass::~MyClass() в Visual Studio 2012 и gcc4.7.2. Я уверен, что onExit всегда вызывается перед уничтожением глобального объекта (например, g_class)?
Интересно, что порядок регистра объектов объекта и порядок регистрации atexit используют одну и ту же таблицу заказов.
Или нет связи между глобальным порядком объектов и порядком atexit?
Отредактировано: Sorry, я написал ошибку. Я так запутался, приведя пример кода. onExit() вызывается перед ~ MyClass().