c++内存模型------计算机系统核心概念及软硬件实现

 c++编程语言有3中不同类项的变量:全局变量、局部变量和动态分配变量。变量的值存储在计算机的内存中,但是变量存储的方式取决于变量的类项。3种类型的变量分别对应存储器中3个特定的区域:

  • 全局变量存放在存储器中的固定位置。
  • 局部变量存放在运行时栈上。
  • 动态分配变量存放在堆上。

  全局变量的声明在所有函数的外面,在程序的执行过程中位置保持不变。局部变量在函数中声明,函数被调用时它们出现,函数结束时他们消失。动态分配变量随着new运算符的执行出现,随着delete运算符的执行消失。

  栈是一个值的容器,通过压入(push)操作存入值,通过弹出(pop)操作取出值。存入和取出值的原则都是后进先出(弹出最后一个压入的值),所以有时候栈被称为LIFO表,Last In ,First Out

  每条执行的c++语句是一个函数的一部分。c++函数有一个返回类型、一个名字和一个参数表。程序包括一个名为main的特殊函数。通过执行main函数中的语句来执行程序。main函数中的语句有可能掉用另一个函数。当执行一个函数时,按照如下顺序对运行时栈的空间进行分配:

  • 压入返回值的存储空间。
  • 压入参数。
  • 压入返回地址。
  • 压入局部变量的存储空间。

  当函数结束时,按照相反的顺序释放运行时栈的存储空间

  • 释放局部变量。
  • 弹出返回地址,根据返回地址确定要执行的下一条语句。
  • 释放参数。
  • 弹出返回值,按照调用语句指定方式进行使用。

  不管一个函数是main函数,还是在另一个函数中被一条语句调用的函数,都会执行这些步骤。


计算机系统核心概念及软硬件实现

转载请注明出处

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值