Интересно, может ли быть уверен порядок между уничтожением глобального объекта и 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().