都说四大内存分区:
代码区、全局区、堆区、栈区
但是这个说法比较粗略。
其实从低地址->高地址:依次为代码区,常量,全局变量和静态变量,bss段,堆区、栈区。
- 代码区
- 常量:const、define
- 全局区(data段):静态变量和初始化的全局变量。data段的映像(包含了各个变量的初值)保存在“只读数据段”,这样启动代码就可以简单地复制这个映像到data段,所有的已初始化变量就都初始化了
- bss段:存储未初始化的全局变量:放在一起是为了简单调用 memset 就可以把所有未初始化的都清0
- 堆区:
- 栈区: