您的位置:首页 > 编程语言

程序内存空间(代码段,数据段,堆栈段)

2018-03-21 21:47 260 查看
点击打开链接
心得:
常量区(常量区中有的常量在常量数据段,有的在代码段,但有的常量如:const修饰的局部常量并没有放在常量区中),例如:局部变量 char a[ ]="hello","hello"字符串常量存在数据段中,而char *b="hello",此时“hello”字符串常量在代码段中,你可以使用 a[1]='w'改变数组a的值,但是你不能通过指针操作即b[1]='w'改变指针指向常量的值,因为hello在代码段中它是常量啊!或者说数组 a[ ]="hello"后在栈上已经分配了空间来存“hello”,这时改变的只是栈上的“hello”当然我们允许的;而局部变量b,虽然我们在栈上给它分配了指针大小的空间,但是这段空间并没有存放"hello",b只是指向了代码段中“hello”,可以理解成只读,所以并不能通过指针改变代码段里的“hello”;const修饰的全局变量,变量在常量区,只读,而const修饰的局部变量并没有放在常量区中,而是存储在栈中,代码块结束时释放,只是此时const常量被设置为只读,不允许改变;此时再说说static,static无论是全局变量还是局部变量都存储在全局/静态区域即数据段中,在编译期就为其分配内存,在程序结束时释放。
心得为本人学习感悟,望网友多多指教。
谢谢大家!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐