C++的内存分区管理机制初探究
常见的内存四区
一、代码区:
-
是否可读可写:只读
防止其他程序意外修改了它的指令
-
作用
存放CPU执行的机器指令。一般的来说代码区是可以跟其他程序共享的,并且还规划了局部变量的相关信息
二、全局区:
-
别名
全局区、静态区、数据区、全局静态区、静态全局区
-
主要可以细分为三个区
1、data区:存放已经初始化的全局变量、静态变量和常量
2、bss区:存放未初始化的全局变量、静态变量
3、常量存储区:全局区的一个小部分,主要存放const修饰的全局变量或者字符串常量
三、栈(stack)区:
-
特点
1、是一种先进后出的数据结构,存放函数的参数、返回值和局部变量
2、程序运行的过程中实时加载和释放
四、堆(heap)区:
-
特点
1、容量远远大于栈,没有像栈一样的先进后出的规则
2、主要用于动态内存的分配
3、由程序员分配和释放,如果程序员不释放,只能在程序结束的时候由操作系统回收