【发布时间】:2014-01-16 09:07:40
【问题描述】:
在C++ Singleton design pattern、obecalp 中提到:
对于许多大型程序,尤其是那些具有动态库的程序。由于库卸载时的破坏顺序问题,任何非原始的全局或静态对象都可能在许多平台上导致程序退出时出现段错误/崩溃。这是许多编码约定(包括 Google 的约定)禁止使用重要的静态和全局对象的原因之一。
有人能详细说明为什么会发生这种情况吗?也许可以举个例子来解释一下?
【问题讨论】:
-
我遇到的一个例子:尝试从单例析构函数中执行 OpenGL 函数 - 在执行析构函数时,Windows 已经自动销毁了窗口以及渲染上下文并卸载了 OpenGL 库。
标签: c++ static global-variables