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

1. 静态生存期

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

如:全局变量

2. 自动生存期

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

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

3. 动态生存期

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

附:

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

auto: 默认,自动生存期

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

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

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

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

代码区: 函数代码

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

堆区: 动态变量

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

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

C++ 变量的生存期相关推荐

  1. 变量的生存期和存储分配

    1.变量的生存期 变量是内存空间的一种抽象,程序中定义的每个变量在运行时都有与之对应的内存空间. C++把变量占有的内存空间的时间段称为生存期,分为三类:静态生存期.动态生存期.自动生存期. 全局变量 ...

  2. JavaScript 变量的生存期

    JavaScript 变量的生存期 JavaScript 变量的生命期从它们被声明的时间开始. 局部变量会在函数运行以后被删除. 全局变量会在页面关闭后被删除.

  3. 变量的生存期与存储类型

    变量的生存期与存储类型 1.变量的生存期 2.变量的存储类型 [1]自动变量 [2]外部变量 [3]静态变量 内部静态变量 外部静态变量 [4]寄存器变量 附:总结表 1.变量的生存期 所谓变量的生存 ...

  4. static变量的生存期问题

    static变量的生存期问题 目录 static变量的生存期问题 C C++ 参考链接 最近要写一个单例类,简单复习下C++的基础知识. static变量是指静态的变量,不管是在全局还是局部声明的静态 ...

  5. python变量作用域和生存期_变量的生存期和作用域

    变量的生存期和作用域是个很基础但又很重要的问题,所以我打算写几百字重温一下. 变量的生存期是指变量在什么时间段存在. 变量的作用域是指变量在哪些代码块中能够被访问. 一般来说变量生存期包含作用域.即在 ...

  6. c++静态变量的生存期

    静态局部变量存在全局数据区,他直到函数结束也不会消失 ,每次重新调用声明静态变量的函数时,也不会为其重新分配空间,它始终保留在全局数据区,直到程序运行结束 程序一开始运行,生存期就开始了,而且它是在默 ...

  7. c语言作用域有哪两种变量,2017年计算机二级C语言字考点归纳:变量的存储类别、作用域及生存期...

    7.7 变量的存储类别.作用域及生存期 1.变量的存储类别 在C语言中,有两类存储类别:自动类别及静态类别. 有4个与两种存储类别有关的说明符:auto(自动).register(寄存器).stati ...

  8. C语言-变量生存期及作用域

    目录 1 变量的生存期和作用域 2 默认初始化规则(C++11) 1 变量的生存期和作用域 变量的储存方式:动态储存(自动.寄存器).静态储存(静态和外部) 储存方式 名称 自动变量 anto 寄存器 ...

  9. 200804C阶段一变量生存期和结构体

    目录 一.学习的知识点 作业 1.函数 函数间的数据传递 变量的生存期 内存中的存储区域包括 存储类别 2.结构体 结构体声明 结构体初始化 结构体赋值 二.上课没有听懂或者没有理解的地方 三.当天学 ...

最新文章

  1. JavaScript中的+运算
  2. CenterNet 读书笔记
  3. canva画图 图片居中裁剪_Canvas裁剪图片(截选框可拖拽)
  4. date时区 es logstash_es-日志存储-Logstash 介绍
  5. mysql mgr简介_mysql8.0初探:(二)MySQL Group Replication-MGR集群简介
  6. 深入理解Spark 2.1 Core (六):Standalone模式运行的原理与源码分析
  7. ML.NET 示例:对象检测
  8. 前端学习(2148):webpack之图片的处理
  9. MSE和Cross-entropy梯度更新比较
  10. linux查看redis没有权限,在linux上安装redis并设置权限
  11. 【原创】在Windows 环境下利用SVN和Apache以及Ankh配置源代码管理服务
  12. 【面经_计算机网络_(个人总结_下】
  13. 从空空狐谈信用卡套利
  14. SpringBoot缓存管理
  15. 解决mysql存储特殊文字(表情符号)utf8mb4
  16. fatal: unable to access ‘‘: Failed to connect to 27.0.0.1 port 7890 after 2097 ms:Connection
  17. php file_put_contents 根目录权限,php – Composer:file_put_contents(./ composer.json):无法打开流:权限被拒绝...
  18. 数据库mysql中对于drop_数据库之删除表数据drop、truncate和delete的用法
  19. 反射机制讲解,js和java反射机制的区别。
  20. php发送指令给易语言,易语言发送信息代码数字指令编程整理

热门文章

  1. Android 开发多摄像头 API
  2. 二代测序的原理和简介
  3. Activiti Designer申请请假流程
  4. ZCANPRO的.can文件解析
  5. office 文档在线预览新姿势之永中云转换
  6. Python实现电子钢琴及封装
  7. 解决中文名单按拼音排序的问题
  8. /etc/ssh/ssh_config line 59: Unsupported option “gssapiauthentication“
  9. ocr识别图片文字 纯前端
  10. 核磁谱图分析步骤_测试干货|核磁共振好基友MestReNova—手把手教你做出一张核磁谱图...