如果我在运行时加载一个 dll/so 文件(即使用 LoadLibrary()
或 dlopen()
),C++ atexit 的行为是什么()
函数?如果我在应用程序退出之前卸载库,它会被调用吗?我可以期望在所有平台上都有相同的行为吗? (具体来说,windows 和类 unix 系统)
最佳答案
在 Windows 下:当您调用 FreeLibrary 时,每个 dll 都会执行 atexit
函数链。重要的是要注意 dll 以未指定的顺序卸载,因此不要添加依赖于其他 dll 全局变量的 atexit
处理程序。
这是更多信息链接:http://msdn.microsoft.com/en-us/library/988ye33t.aspx
关于c++ - 在运行时加载的 dll/so 中 atexit() 的行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695765/