第1章 语言使用基本问题 1
1.1 变量使用问题 1
1.2 运算符使用问题 24
1.3 函数问题 47
1.4 条件语句问题 57
1.5 循环语句问题 64
1.6 数值类型转换问题 67
第2章 内存管理 85
2.1 内存分配与使用 87
2.2 内存泄漏 96
第3章 缓冲区溢出 118
3.1 数组越界 119
3.2 数据越界 124
3.3 字符串操作溢出 125
第4章 指针问题 141
4.1 空指针解引用 142
4.2 指针非法使用 148
第5章 安全缺陷 158
5.1 外部输入安全缺陷 158
5.2 资源泄漏 162
5.3 其他 169
第6章 与类有关的编程缺陷 174
第7章 其他 208
7.1 预处理 208
7.2 异常 215
7.3 多线程和同步性 226
7.4 代码不可达 229
附录A 常用静态分析工具 234
A.1 PolySpace——运行时错误静态检查工具 234
A.1.1 PolySpace Verifier 235
A.1.2 PolySpace Viewer 238
A.2 Klocwork——代码静态检查工具 240
A.2.1 工程创建与分析 241
A.2.2 分析结果查看 244
A.3 Testbed——静态和动态测试工具 250
A.3.1 单个文件分析 251
A.3.2 分析结果查看 254
A.3.3 多个文件批量分析 263
A.4 McCabe IQ2——软件质量保证工具 265
A.4.1 McCabe EQ 265
A.4.2 McCabe Test 272
A.4.3 McCabe Reengineer 273
参考文献 274