C++ 语言 把内存分为5大区域:
- 
栈(Stack) 内存区: - 
栈主要存储 局部变量 和 函数参数。 
- 
该存储区由 编译器 自动分配和释放。 
- 
栈 内存区域的 进栈 和 出栈 有相应的 计算机指令 支持。 
- 
有专门的 寄存器 存储栈的地址,效率高。 
- 
栈内存区域的内存空间是连续的。 
- 
但栈也有局限,就是内存空间有限。 
- 
栈 也是计算机系统的数据结构之一。 
 
- 
- 
堆(Heap) 内存区: - 
程序员使用 new 关键字手动创建和使用 delete 关键字手动释放,属于动态分配。 
- 
堆的内存空间不连续,会产生碎片。 
- 
堆的内存空间趋近于无限,主要受物理内存条本身大小限制。 
- 
操作系统有一个记录未分配的内存空间的链表,当收到内存申请( new关键字)时会遍历链表,找到第一个空间大于申请空间的堆节点,将该节点分配给程序并将该节点从链表中删除。
- 
当分配内存空间时,一般会在该内存空间的首地址处记录本次分配的内存大小。 
 
- 
- 
全局/静态区: - 
存储 全局变量 和 静态变量。 
- 
该区域的变量会在程序结束后自动释放。 
- 
该区域又分为 DATA(全局初始化区) 和 BBS(全局未出初始化) 两段。 - 
已经初始化的全局变量和静态变量存放在 DATA 段。 
- 
未出实话的全局变量和静态变量存放在 BBS 段。 
- 
BBS 段会在程序执行前自动清零。因为这个特性,所以未初始化的全局变量和静态变量会自动初始化为 0(不是数字0,而是对应的数据类型的空值)。
 
- 
 
- 
- 
文字常量区: - 
存放常量,且不能修改。 
- 
程序结束后自动释放。 
 
- 
- 
程序代码区: - 存放程序的二进制代码。
 
习题
const 关键字的变量存储在哪个区域 ?
            目前尚无回复
        
    
    