对空指针执行解引用
NULL 指针解引用
描述
当您将值为 NULL 的指针用作指向有效内存位置的指针时,会发生此错误。如果对零地址(如 0x00)进行解引用,Polyspace® 将空地址视为与 NULL 等价,并触发此缺陷。
风险
对空指针进行解引用是未定义行为。在大多数实现中,解引用操作可能会导致程序崩溃。
修复
在解引用指针之前,先检查该指针是否为 NULL。
如果在之前已检查过 NULL 的情况下问题仍然出现,请查找检查与后续解引用操作之间的中间事件。通常,结果详细信息(或在 Polyspace as You Code 中显示的源代码提示)会显示导致缺陷的一系列事件。您可以在序列中的任何事件上实施此修复。如果结果详细信息未显示此事件历史记录,您可以使用源代码中的右键点击选项搜索与缺陷相关的变量的先前引用,并找到相关事件。另请参阅解释 Polyspace 桌面端用户界面中的 Bug Finder 结果或解释 Polyspace Access Web 界面中的 Bug Finder 结果 (Polyspace Access)。
请参阅以下修复示例。
扩展检查项
当输入值未知并且只有一部分输入会导致问题时,默认的 Bug Finder 分析可能不会引发此缺陷。要检查由特定系统输入值引起的缺陷,请运行更严格的 Bug Finder 分析。请参阅Extend Bug Finder Checkers to Find Defects from Specific System Input Values。
示例
结果信息
| 组:静态内存 |
| 语言:C | C++ |
| 默认值:On |
命令行语法:NULL_PTR |
| 影响:高 |