c语言下,对象存储类型:
任何可执行程序最终会变成一系列机器指令和数据(恰好对应了数据结构和算法),在将一个程序的源代码转换成机器执行指令的过程中,一些程序元素会被剔除,另一些程序元素则保留在可执行代码中。
被保留的程序会占用可执行程序一部分的存储空间,不同的出现元素在运行使得存储方式不同,引出了“存储类型”的概念。
存储类型和存储持续性:
c语言中为变量,常量,函数等定义了4中存储类型。分别是extern,auto,static,register,它们分别用一个关键字(存储类型说明符)来说明。
存储持续性:
1、自动存储持续性:在函数定义中声明的变量,包括函数参数的存储持续性为自动的,它们在程序开始执行其所属的函数或代码块时被创建执行完函数或代码块时其内存被释放,c++中有两种持续性为自动的变量。
2、静态存储持续性:在函数体外定义的变量和使用关键字static定义的变量的存储持续性都是静态,它们在整个程序运行过程中都存在,c++中有三种存储持续性为静态的变量。
3、线程存储持续性:被关键字thread_local声明的变量的生命周期与其所属的线程一样长。
4、动态存储持续性:用new/malloc申请的内存一直存在直到delete/free将其释放或进程结束,这种内存的存储持续性为动态,又称自由存储或堆。
一个程序的存储类型和它的作用域,