c语言下,对象存储类型和存储持续性,对象生存期限(生命周期)

C语言中,对象的存储类型分为extern、auto、static、register四种,影响其存储持续性和生存期限。自动存储类型变量在函数执行时创建,结束后释放;静态存储类型变量在整个程序运行期间存在。此外,线程存储持续性针对线程局部变量,动态存储持续性涉及new/malloc分配的内存。变量的生存期限分为永久和临时,关键字auto在C11之前用于指定自动存储,现代C++中用于类型推断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言下,对象存储类型:

任何可执行程序最终会变成一系列机器指令和数据(恰好对应了数据结构和算法),在将一个程序的源代码转换成机器执行指令的过程中,一些程序元素会被剔除,另一些程序元素则保留在可执行代码中。

被保留的程序会占用可执行程序一部分的存储空间,不同的出现元素在运行使得存储方式不同,引出了“存储类型”的概念。

存储类型和存储持续性:
c语言中为变量,常量,函数等定义了4中存储类型。分别是extern,auto,static,register,它们分别用一个关键字(存储类型说明符)来说明。

存储持续性:

1、自动存储持续性:在函数定义中声明的变量,包括函数参数的存储持续性为自动的,它们在程序开始执行其所属的函数或代码块时被创建执行完函数或代码块时其内存被释放,c++中有两种持续性为自动的变量。
2、静态存储持续性:在函数体外定义的变量和使用关键字static定义的变量的存储持续性都是静态,它们在整个程序运行过程中都存在,c++中有三种存储持续性为静态的变量。
3、线程存储持续性:被关键字thread_local声明的变量的生命周期与其所属的线程一样长。
4、动态存储持续性:用new/malloc申请的内存一直存在直到delete/free将其释放或进程结束,这种内存的存储持续性为动态,又称自由存储或堆。

一个程序的存储类型和它的作用域,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值