内存中的data区内的数据是不会随着函数的结束而消失而是到程序运行完毕才释放,而stack是函数结束就释放(函数结束=出栈)?可以这样理解吗?那么像在main函数中定义一个变量int a = 10;或是数组int a[5];是不是放在栈中的?那什么类型的数据是放在data中的?字符常量吗?
2 回答
狐的传说
TA贡献1804条经验 获得超3个赞
内存主要分为代码段,数据段和堆栈。代码段放程序代码,属于只读内存。数据段存放全局变量,静态变量,常量等,堆里存放自己malloc或new出来的变量,其他变量就存放在栈里,堆栈之间空间是有浮动的。数据段的内存会到程序执行完才释放。调用函数先找到函数的入口地址,然后计算给函数的形参和临时变量在栈里分配空间,拷贝实参的副本传给形参,然后进行压栈操作,函数执行完再进行弹栈操作。字符常量一般放在数据段,而且相同的字符常量只会存一份
- 2 回答
- 0 关注
- 197 浏览
添加回答
举报
0/150
提交
取消