进程的内存映像
就简单介绍下,关于源程序是如何分布在内存中的

首先,假设系统为32位,进程虚拟地址空间为4GB
读/写数据:包含程序里的*全局变量,静态变量*,你也明白,程序编写过程中这两类变量是不允许更改的
只读代码/数据:包含,程序指令,只读数据。也就是程序编译后的机器指令,和部分只读数据
上述两种区域进程启动时就能确定大小,故而固定不变
堆:由用户自行分配的空间区域,new嘛,malloc嘛
这个就很自由,随着进程的运行而变化嘛
共享库的存储映射区:这一部分呢,就是导入的各种函数包啊,还有库函数啊
用户栈:由各个函数的栈帧组成,包含各局部变量,函数调用相关的信息
局部变量存储在此,毕竟是经常变化的变量
函数调用,函数栈就在此处,你明白的,递归可能导致函数栈过多或者溢出导致效率低下
内核区代码就不多赘述
要注意的是进程的管理模块PCB就在此处