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

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

慕容森
浏览 199回答 2
2回答

狐的传说

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

四季花海

看一看简单的汇编,比如mips汇编,关于怎么保存数据现场(也就是如何定义和销毁局部变量的入栈/出栈操作,一定会有透彻的领悟!)
打开App,查看更多内容
随时随地看视频慕课网APP