C++-存储周期

简介

程序中的所有对象都具有存储周期

详解

自动(automatic)存储期

这类对象的存储在外围代码块开始时分配,并在结束时解分配

未声明为 static、extern 或 thread_local 的所有局部对象均拥有此存储期

静态(static)存储期

这类对象的存储在程序开始时分配,并在程序结束时解分配。这类对象只存在一个实例。所有声明于命名空间(包含全局命名空间)作用域的对象,加上声明带有 static 或 extern 的对象均拥有此存储期

线程(thread)存储期

这类对象的存储在线程开始时分配,并在线程结束时解分配

每个线程拥有其自身的对象实例

只有声明为 thread_local 的对象拥有此存储期

thread_local 能与 static 或 extern 一同出现,它们用于调整链接

动态(dynamic)存储期

这类对象的存储是通过使用动态内存分配函数(new 与 delete)来按请求进行分配和解分配的