Указатель, обозначенный вне его границ
Этот дефект возникает, когда указатель вычеркивается вне его границ.
Когда указателю назначается адрес, с указателем ассоциируется блок памяти. Вы не можете получить доступ к памяти за пределами этого блока с помощью указателя.
Удаление указателя за его пределы является неопределенным поведением. Можно считать непредсказуемое значение или попытаться получить доступ к расположению, которое не разрешено, и столкнуться с отказом сегментации.
Исправление зависит от первопричины дефекта. Например, вы разобрали указатель внутри цикла, и произошла одна из следующих ситуаций:
Верхняя граница цикла слишком велика.
Вы использовали арифметику указателя для продвижения указателя с неправильным значением шага указателя.
Чтобы исправить проблему, вы должны изменить привязку цикла или значение шага указателя.
Часто детали результата показывают последовательность событий, которые привели к дефекту. Вы можете реализовать исправление на любом событии в последовательности. Если сведения о результате не отображают историю событий, можно отследить их с помощью опций правого щелчка в исходном коде и просмотреть предыдущие связанные события. Смотрите также Результаты интерпретации Bug Finder в интерфейсе пользователя Polyspace Desktop.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к своему результату или коду, чтобы избежать другой проверки. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.
Группа: Статическая память |
Язык: C | C++ |
По умолчанию: On |
Синтаксис командной строки: OUT_BOUND_PTR |
Влияние: Высокий |
ИДЕНТИФИКАТОР CWE: 119, 131, 188, 466, 823 |