问题:全局变量、局部变量、静态变量和常量在内存中的区别?
问集中变量在内存中的区别,首先我们要知道一个C/C++程序在运行时内存的布局是什么样的,如下图:
一个运行的程序在内存中主要表示为这四种空间区域。那这几种空间区域存储的是什么?
代码区:存放的是程序的执行代码(编译后的二进制代码)。
全局数据区:存放全局变量、静态变量、常量和文字量(文字量和常量有区别的)。
堆区:存放动态内存,供程序随机申请使用。C的malloc、free,C++的new和delete内存分配就是在堆中进行。
栈区:又称局部数据区,它动态反映了程序运行中的函数状态。存储函数的形参、局部变量以及函数的返回值和返回地址。
参考:C++程序设计教程(第二版) 钱能-清华大学出版社