本文作者原创,首发在本博客;CSDN 上的同名文章已标注为转载并回链到本页:https://blog.csdn.net/qq_30220519/article/details/155111519
背景
常用单例之间操作相互依赖或者对同一份资源进行操作。进行对象或资源释放时候,很容易重复,导致程序异常。
依赖顺序
// a.cpp
static A a; // 第1个构造 → 最后释放
static LateDestructor late; // 依赖a,会后析构// b.cpp
static B b; // 构造顺序依赖链接顺序 → 释放顺序不确定// main.cpp
void foo() {
static C c; // 在foo()首次调用时构造 → 在main.cpp其他静态变量之后释放
}int main() {
foo();
static D d; // 构造顺序较晚 → 释放顺序较早
return 0;
}
释放顺序:d → c → a → b(b的顺序不确定)
aexit
1 |
|
晚释放单例类
1 |
|
创作不易,小小的支持一下吧!

