atexit
我想知道在销毁全局对象和在 C++中可以确定顺序
我有一个全局对象和注册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
?
编辑:对不起,我写错了。我在整理示例代码时很困惑。onExit()
在 ~MyClass() 之前调用。