Индекс массива вне ограничивает во время доступа к массиву
Этот дефект происходит, когда индекс массива выходит за пределы области значений [0...array_size-1]
во время доступа к массиву.
Доступ к массиву вне его границ является неопределенным поведением. Можно считать непредсказуемое значение или попытку получить доступ к местоположению, которое не позволено, и столкнитесь с отказом сегментации.
Фиксация зависит от первопричины дефекта. Например, вы получили доступ к массиву в цикле, и одна из этих ситуаций произошла:
Верхняя граница цикла является слишком большой.
Вы использовали индекс массива, который совпадает с индексом цикла вместо того, чтобы быть тем меньше, чем индекс цикла.
Чтобы устранить проблему, необходимо изменить связанный цикл или индекс массива.
Другой причиной, почему индекс массива может превысить границы массивов, является предшествующее преобразование от со знаком до беззнакового целого. Преобразование может привести к тому, чтобы переносить значения индекса, в конечном счете заставив индекс массива превысить границы массивов.
Часто детали результата показывают последовательность событий, которые привели к дефекту. Можно реализовать закрепление на любом событии в последовательности. Если детали результата не показывают историю события, можно проследить использование, щелкните правой кнопкой по опциям по исходному коду и смотрите предыдущие связанные события. См. также Интерпретируют Результаты Bug Finder в Пользовательском интерфейсе Рабочего стола Polyspace.
Смотрите примеры мер ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.
Группа: Статическая память |
Язык: C | C++ |
Значение по умолчанию: On |
Синтаксис командной строки: OUT_BOUND_ARRAY |
Удар: высоко |
ID CWE: 119, 131, 466 |