1 程序中的所有对象拥有下列存储期之一:
- 自动存储期
- 对象的存储在外围代码块开始时分配,而在结束时解分配。
- 除了声明为 static 、 extern 或 thread_local 的所有局部对象拥有此存储期。
- 静态存储期
- 对象的存储在程序开始时分配,而在程序结束时解分配。只存在对象的一个实例。
- 所有声明于命名空间作用域(包含全局命名空间)的对象,加上声明带有 static 或 extern 的对象拥有此存储期。
- 线程存储期
- 对象的存储在线程开始时分配,而在线程结束时解分配。
- 每个线程拥有其自身的对象实例。唯有声明为 thread_local 的对象拥有此存储期。 thread_local 能与 static 或 extern 一同出现,以调整链接。(C++11 起)
- 动态存储期
- 通过使用动态内存分配函数,由请求分配和解分配对象的存储。
2 参考
存储期