内存布局

  • 代码段:程序的所有指令会存放在这个区域,这是已经编译后的机器码。
  • 字面量池:程序初始化时的一些字符串字面量,在程序中用于显示文字
  • 全局数据段:程序初始化时的常量和全局/静态的变量。C/C++ 用global/static声明的变量都存放在这个区域,对所有函数公开可见。
  • :这里保存的数据只是为了临时存储一些值而创建的,而我们可能在程序运行过程中可能会回收此内存。因为我们在程序执行期间不需要很长时间,所以使用C中的newmalloc这类内存分配程序来为我们所需的特定数据类型提供新的空间,并且随着我们要求越来越多的动态数据空间而该区域不断扩大,并且在内存中逐渐增长到更高的地址。
  • :存储着该程序 “上下文”,它将从内存的高层地址开始,然后向另一个方向向下扩展。上下文其实就是程序中各个函数之间调用的先后顺序

程序栈帧

帧(frame),在进程中每个函数被调用时分别从这个栈占用一段区域,就称为帧。