跳到正文

第2章学习笔记:C程序的内存模型

课程笔记

沿程序真实运行路径学习C程序的内存模型,始终区分抽象接口、实现状态和可观测证据。

关联:章节 第2章 C程序的内存模型

第2章笔记:C程序的内存模型

本章要解决的问题

沿程序真实运行路径学习C程序的内存模型,始终区分抽象接口、实现状态和可观测证据。 本章七课是一条连续推理链,不是七个标题。先确定上一课输出怎样成为下一课输入,再记录对象、事件、状态和证据。

七课连接

  • 对象、地址与指针:关系 pointer=base+i\,sizeof(T);练习为为《对象、地址与指针》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 pointer=base+i,sizeof(T) 复算关键量;边界为不能把《对象、地址与指针》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《数组与指针算术》。
  • 数组与指针算术:关系 a[i]=*(a+i);练习为为《数组与指针算术》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 a[i]=*(a+i) 复算关键量;边界为不能把《数组与指针算术》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《结构体布局与填充》。
  • 结构体布局与填充:关系 offset=align(offset,a);练习为为《结构体布局与填充》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 offset=align(offset,a) 复算关键量;边界为不能把《结构体布局与填充》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《栈、堆与生命周期》。
  • 栈、堆与生命周期:关系 live\ object\Rightarrow valid\ access;练习为为《栈、堆与生命周期》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 live\ object\Rightarrow valid\ access 复算关键量;边界为不能把《栈、堆与生命周期》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《别名与未定义行为》。
  • 别名与未定义行为:关系 effective\ type+aliasing;练习为为《别名与未定义行为》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 effective\ type+aliasing 复算关键量;边界为不能把《别名与未定义行为》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《缓冲区边界与安全》。
  • 缓冲区边界与安全:关系 0\le index<length;练习为为《缓冲区边界与安全》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 0\le index<length 复算关键量;边界为不能把《缓冲区边界与安全》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《内存布局检查实验》。
  • 内存布局检查实验:关系 symbol\to address\ range;练习为为《内存布局检查实验》构造一条最短可运行轨迹,逐步记录输入状态、系统动作和输出状态,并用关系 symbol\to address\ range 复算关键量;边界为不能把《内存布局检查实验》在语言、ABI、ISA、微体系结构、内核或设备层的对象混成一个‘系统自动完成’,必须声明位宽、权限、时序和失败后的可见状态;连接说明:承接前一课的状态或契约;本节结果会进入《预处理与翻译单元》。

章内学习法

先闭卷画一条最短执行轨迹,再为每个箭头标主体和所属层;随后逐式复算,运行本章代码实验四组测试,并增加一个越界、权限、冲突、乱序或故障输入。只要实际值与模型不同,就保存首个偏差,不用后续噪声替代根因。

错题与复习

把错误归入分层混淆、位宽/单位、状态跳步、事件顺序、权限遗漏、并发交错、故障恢复或观察窗八类。一周后更换参数重做阶段卷;能向同学从现象讲到机制、公式、实验和边界,才算学会。