内存一般分为四个区:堆区、栈区、全局区、代码区
对于一个程序的编译而言,编译程序占用五个区:堆区、栈区、全局区、代码区、文字常量区
堆区:程序员动态申请一定大小的内存空间,可读可写
栈区:存放局部变量,函数参数,可读可写
全局区:全局变量,静态变量(静态全局和静态局部)、静态函数、还分为data区和bss区,可读可写
代码区:存放编译后的可执行的二进制代码,只读
文字常量区:存放的是常量字符串,只读
内存分区运行前后的区别:
1、程序运行前:代码区,data区,bss区(data区和bss区存放在全局区中)
代码区:存放的是编译后的二进制代码
data区:存放的是初始化后的变量
bss区:存放的是未初始化的变量
为什么要将程序与数据分开保存:因为程序指令是可以共享的,为只读状态,分开保存可以一是可以保证程序指令不被修改,二是可以节省内存空间,当执行
多个同样的程序时,它们的指令是相同的,但是处理的数据不相同。
2、程序运行后:代码区、data区、bss区、堆区、栈区
标签:栈区,堆区,分区,bss,存放,内存,data,代码 From: https://www.cnblogs.com/gaishuobulao/p/18038739