简介
程序中的所有对象都具有存储周期
详解
自动(automatic)存储期
这类对象的存储在外围代码块开始时分配,并在结束时解分配
未声明为 static、extern 或 thread_local 的所有局部对象均拥有此存储期
静态(static)存储期
这类对象的存储在程序开始时分配,并在程序结束时解分配。这类对象只存在一个实例。所有声明于命名空间(包含全局命名空间)作用域的对象,加上声明带有 static 或 extern 的对象均拥有此存储期
线程(thread)存储期
这类对象的存储在线程开始时分配,并在线程结束时解分配
每个线程拥有其自身的对象实例
只有声明为 thread_local 的对象拥有此存储期
thread_local 能与 static 或 extern 一同出现,它们用于调整链接
动态(dynamic)存储期
这类对象的存储是通过使用动态内存分配函数(new 与 delete)来按请求进行分配和解分配的