指针访问越界
指针在超出其作用域范围外被解引用
描述
此缺陷发生在指针在超出其作用域范围外被解引用时。
当一个指针被赋予一个地址时,一个内存模块就会与该指针相关联。您无法使用指针访问该模块之外的内存。
风险
在指针的有效范围之外对其进行解引用是未定义行为。您可能会读取一个不可预测的值,或尝试访问一个不允许访问的位置,从而遇到段错误。
修复
修复方法取决于缺陷的根本原因。例如,您在循环中解引用了一个指针,并且发生了以下情况之一:
循环的上限过大。
您使用指针运算将指针向前移动,但指针递增值不正确。
要解决这个问题,您必须修改循环边界或指针递增值。
通常,结果详细信息(或在 Polyspace as You Code 中显示的源代码提示)会显示导致缺陷的一系列事件。您可以在序列中的任何事件上实施此修复。如果结果详细信息未显示此事件历史记录,您可以使用源代码中的右键点击选项搜索与缺陷相关的变量的先前引用,并找到相关事件。另请参阅解释 Polyspace 桌面端用户界面中的 Bug Finder 结果或解释 Polyspace Access Web 界面中的 Bug Finder 结果 (Polyspace Access)。
请参阅以下修复示例。
如果您不想修复问题,请在结果或代码中添加注释,以免再次被审查。请参阅:
通过 Bug 修复或申述在 Polyspace 用户界面中处理结果 在 Polyspace 用户界面中审查结果时。
通过 Bug 修复或申述在 Polyspace Access 中处理结果 (Polyspace Access)(如果您在 Web 浏览器中审查结果)。
为代码添加注解并隐藏已知或可接受的结果 在 IDE 中审查结果时。
示例
结果信息
组:静态内存 |
语言:C | C++ |
默认值:On |
命令行语法:OUT_BOUND_PTR |
影响:高 |
版本历史记录
在 R2013b 中推出
另请参阅
主题
- 解释 Polyspace 桌面端用户界面中的 Bug Finder 结果
- 解释 Polyspace Access Web 界面中的 Bug Finder 结果 (Polyspace Access)
- 通过 Bug 修复或申述在 Polyspace 用户界面中处理结果
- 通过 Bug 修复或申述在 Polyspace Access 中处理结果 (Polyspace Access)