为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦帮忙看看关于在c语言中关于data与stack的联系?

麻烦帮忙看看关于在c语言中关于data与stack的联系?

慕容森 2021-12-16 11:07:43
内存中的data区内的数据是不会随着函数的结束而消失而是到程序运行完毕才释放,而stack是函数结束就释放(函数结束=出栈)?可以这样理解吗?那么像在main函数中定义一个变量int a = 10;或是数组int a[5];是不是放在栈中的?那什么类型的数据是放在data中的?字符常量吗?
查看完整描述

2 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

内存主要分为代码段,数据段和堆栈。代码段放程序代码,属于只读内存。数据段存放全局变量,静态变量,常量等,堆里存放自己malloc或new出来的变量,其他变量就存放在栈里,堆栈之间空间是有浮动的。数据段的内存会到程序执行完才释放。调用函数先找到函数的入口地址,然后计算给函数的形参和临时变量在栈里分配空间,拷贝实参的副本传给形参,然后进行压栈操作,函数执行完再进行弹栈操作。字符常量一般放在数据段,而且相同的字符常量只会存一份

查看完整回答
反对 回复 2021-12-19
?
四季花海

TA贡献1811条经验 获得超5个赞

看一看简单的汇编,比如mips汇编,关于怎么保存数据现场(也就是如何定义和销毁局部变量的入栈/出栈操作,一定会有透彻的领悟!)

查看完整回答
反对 回复 2021-12-19
  • 2 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信