小编zel*_*lon的帖子

在C++中销毁全局对象和atexit之间的顺序

我想知道可以确定在销毁全局对象和atexitC++ 之间的顺序

我有一个全局对象和注册atexit函数如下:

static MyClass g_class;

void onExit()
{
    // do some destruction
}

int main()
{
    atexit(onExit);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我发现onExit()之前MyClass::~MyClass()在Visual Studio 2012和gcc4.7.2中调用过.我确定onExit在全局对象(如g_class)销毁之前总是会调用它吗?

我想知道全局对象寄存器顺序和atexit寄存器顺序使用相同的顺序表.或者全局对象顺序和atexit顺序之间没有关系?

编辑:对不起,我写错了.整理示例代码时我很困惑.onExit()在~MyClass()之前调用.

c++ atexit order-of-execution global-object

16
推荐指数
1
解决办法
3493
查看次数

标签 统计

atexit ×1

c++ ×1

global-object ×1

order-of-execution ×1