内存分区
1、整体框图
内存分为代码区、全局区、栈区、堆区。代码区和全局区在代码编译完之后就已经确定,栈区和堆区是在程序运行时进行开辟和释放的。整体内存分区框图如下:
对于一个进程,它一共有4G的空间,其中0~3G为上述的4个区(用户空间)、3G~4G为内核空间。
2、各区的含义
2.1 代码区
代码区存放的是函数体的二进制代码,由操作系统进行管理,具有共享、只读的特征。
即:存放的是我们自己写的代码通过编译后生成的cpu执行的机器指令。
2.2 全局区
全局区又叫全局静态区,存放的是全局变量、静态变量(static)、常量(const)
全局区的生命周期直到程序结束,这代表全局区的数据会一直占用空间,也代表变量随时可以访问
全局区中又分为三个区,从低地址到高地址分别为文字常量区、初始化数据区、未初始化数据区。
其中:未初始化区是指 " 没有初始化 " 或 " 以0为初始值 "的情况。具体的框图如下:
2.3