在运行时加载的dll/so中atexit()的行为是什么?

Mar*_*ark 5 c++ dll shared-libraries

如果我在运行时加载一个dll/so文件(即使用LoadLibrary()dlopen()),C++ atexit()函数的行为是什么?如果我在应用程序退出之前卸载库,它会被调用吗?我可以期望在所有平台上都有相同的行为吗?(具体来说,windows和unix类系统)

mar*_*inj 5

在 windows 下:当你调用 FreeLibrary 时,每个 dll 都会执行atexit函数链。重要的是要注意 dll 以未指定的顺序卸载,因此不要添加atexit依赖于其他 dll 全局变量的处理程序。

这是更多信息链接:http : //msdn.microsoft.com/en-us/library/988ye33t.aspx