C++ 变量的生存期

本文详细介绍了程序中变量的三种生存期:静态生存期、自动生存期及动态生存期,并解释了各自的应用场景,如全局变量、局部变量及通过new或malloc分配的动态变量等。此外还介绍了如何使用auto、static和register关键字来指定局部变量的生存期。

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

变量的生存期是指其在程序运行时占用内存空间的时间段。

1. 静态生存期

    从程序开始执行时分配到程序结束时收回。

    如:全局变量

2. 自动生存期

    从程序执行到定义它们的复合语句时分配到复合语句执行完毕时收回。

    如:局部变量、函数的参数

3. 动态生存期

    用new操作或者malloc函数来进行分配,用delete操作或者调用free函数来收回。


附:

1. 在定义局部变量时,使用auto、static、register来显式指出它们的生存期。

    auto: 默认,自动生存期

    static: 静态生存期,在函数多次调用时,可以保留上次调用的结果

    register: 自动生存期,与auto不同在于,建议(不是一定)编译程序把该局部变量的空间分配在CPU寄存器中,其目的是为了提高对局部变量的访问效率。

2. 内存空间分为四个部分:静态数据区、代码区、栈区、堆区

    静态数据区:全局变量、static存储类的局部变量、常量

    代码区: 函数代码

    栈区: auto存储类的局部变量、函数的形参、函数调用时的有关信息(如返回值)

    堆区: 动态变量


    静态数据区和代码区的大小是固定的,而栈区和堆区的大小随程序的运行不断变化(不过操作系统会对其空间最大值有一定的限制)。

3.  编译程序隐式自动将静态生存期的变量按位模式初始化为0,其他变量不对其进行初始化(使用空间中的已有值,因此是不固定的)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值