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