因为我总是记不清这些概念以及包含的内容,所以想写一篇文章来加深自己对着四个区域的印象,让我们一起来看看吧。
1.代码区:存放函数的二进制代码,是由操作系统进行管理的。
2.全局区(又称 数据区/静态区):存放全局变量和静态变量以及常量。
这里的静态变量是指带有static修饰的变量(不分全局与局部)。
常量又分为两种,一种是字符串常量,一种是const修饰的全局常量,而const修饰的局部变量不属于全局区,如果大家记混淆的话,就着重“局部”这两个关键字,看到这个关键字,就肯定是局部变量了。
3.栈区:由编译器自动给分配释放,如存放函数的参数值,以及局部变量,在程序结束后由操作系统回收。
注意:栈区的数据在函数执行完后,就已经被释放了。
第一次打印出来数据是因为该机器内部能够保证你输出这一个值(误以为是程序员不小心弄错的),而第二次由于数据被释放,因此出现了乱码的现象。
4.堆区:由程序员分配和释放,若程序员没有释放,程序结束时由操作系统回收。