| 摘要 | 第5-7页 |
| ABSTRACT | 第7-8页 |
| 第1章 绪论 | 第12-18页 |
| 1.1 研究背景 | 第12-14页 |
| 1.1.1 形式程序验证 | 第12-13页 |
| 1.1.2 源代码级分析与验证 | 第13-14页 |
| 1.2 本文概述 | 第14-18页 |
| 1.2.1 研究工作 | 第14-15页 |
| 1.2.2 相关工作比较 | 第15-16页 |
| 1.2.3 主要贡献 | 第16-17页 |
| 1.2.4 章节安排 | 第17-18页 |
| 第2章 安全C语言验证系统简介 | 第18-36页 |
| 2.1 验证系统框架 | 第18-19页 |
| 2.2 安全C语言 | 第19-22页 |
| 2.2.1 安全C语言简介 | 第19-20页 |
| 2.2.2 安全C语言的程序约束 | 第20-22页 |
| 2.3 安全C的规范语言 | 第22-25页 |
| 2.3.1 SCSL简介 | 第22-24页 |
| 2.3.2 SCSL的形状标注 | 第24-25页 |
| 2.4 形状图逻辑 | 第25-33页 |
| 2.4.1 形状图定义 | 第25-26页 |
| 2.4.2 基本数据结构的形状图描述 | 第26-27页 |
| 2.4.3 形状图变换规则 | 第27-30页 |
| 2.4.4 形状图演算规则 | 第30-33页 |
| 2.5 本章小结 | 第33-36页 |
| 第3章 形状图逻辑扩展 | 第36-48页 |
| 3.1 形状图变换规则的扩展 | 第36-40页 |
| 3.1.1 单链表形状变换规则的扩展 | 第36-37页 |
| 3.1.2 二叉树形状变换规则的扩展 | 第37-40页 |
| 3.2 循环不变形状图推断流程的改进 | 第40-44页 |
| 3.2.1 针对形状图变换规则更改进行的改进 | 第40-43页 |
| 3.2.2 针对推断算法性能的优化 | 第43-44页 |
| 3.3 形状图演算规则的改进 | 第44-46页 |
| 3.3.1 指针赋值语句演算规则的改进 | 第44-45页 |
| 3.3.2 分配空间语句演算规则的改动 | 第45-46页 |
| 3.4 本章小结 | 第46-48页 |
| 第4章 形状系统的实现 | 第48-58页 |
| 4.1 形状系统演算流程 | 第48-50页 |
| 4.2 形状图变换规则的实现 | 第50-52页 |
| 4.2.1 使用访问路径展开形状图 | 第50-51页 |
| 4.2.2 形状图折叠到最简 | 第51-52页 |
| 4.3 形状图蕴含关系判定方法的实现 | 第52-54页 |
| 4.4 循环不变形状图自动推断的实现 | 第54-56页 |
| 4.4.1 循环不变形状图推断流程实现 | 第54-55页 |
| 4.4.2 形状图抽象的实现 | 第55-56页 |
| 4.5 本章小结 | 第56-58页 |
| 第5章 实例分析 | 第58-66页 |
| 5.1 验证系统现状 | 第58页 |
| 5.2 实例分析 | 第58-64页 |
| 5.2.1 双链表反转函数 | 第59-62页 |
| 5.2.2 二叉排序树删除节点函数 | 第62-64页 |
| 5.3 本章小结 | 第64-66页 |
| 第6章 总结与进一步的研究工作 | 第66-68页 |
| 6.1 本文工作总结 | 第66页 |
| 6.2 进一步研究工作 | 第66-68页 |
| 参考文献 | 第68-72页 |
| 附录1 reverse函数循环不变形状图 | 第72-73页 |
| 附录2 tree_delete函数的第二个循环不变形状图 | 第73-74页 |
| 致谢 | 第74-76页 |
| 在读期间发表的学术论文与取得的其他研究成果 | 第76页 |