编译原理复习P2
本文是题目导向的,立足于期末考试可能会出现的题目,并且对于提到的相关概念做了一个简单整理
运行时存储结构 (Runtime Storage Organization)
程序的运行时内存通常划分为三个主要区域,分别存放不同生命周期的数据:
- 代码区 (Code Segment):存放编译后的机器指令(如
main和sub函数的代码)。由于大小在编译时已知,属于静态区域。 - 静态数据区 (Static Data Segment):存放编译时大小已知的数据对象。
- 包括:全局变量(如 $int$ $m=10$)、全局常量、编译器产生的辅助数据。
- 生命周期:贯穿整个程序运行过程。
- 动态数据区 (Dynamic Data Segment):存放运行时动态产生的数据,分为栈区和堆区。
- 栈区 (Stack):存放活动记录 (Activation Record),即函数调用的栈帧。遵循后进先出(LIFO)原则。由
BP(栈底指针) 和SP(栈顶指针) 管理。 - 堆区 (Heap):存放生命周期不确定的数据(如
malloc/new申请的对象),由程序员手动释放或由垃圾回收器管理。
- 栈区 (Stack):存放活动记录 (Activation Record),即函数调用的栈帧。遵循后进先出(LIFO)原则。由


