Указатель, полученный из арифметики на операнде указателя, должен адресовать элемент того же массива, что и этот операнд указателя
Указатель, полученный из арифметики на операнде указателя, должен адресовать элемент того же массива, что и этот операнд указателя.
Использование недопустимого индекса массива может привести к ошибочному поведению программы. Производные от выполнения индексы массива особенно проблематичны, потому что их невозможно легко проверить путем ручного обзора или статического анализа.
Стандарт C определяет создание указателя на указатель за пределами массива. Правило разрешает использование стандарта C. Удаление указателя на указатель за пределами конца массива вызывает неопределенное поведение и является несовместимым.
Polyspace® помечает это правило во время анализа как:
Bug Finder - Array access
out-of-bounds
и Pointer access
out-of-bounds
.
Code Prover - Illegally dereferenced pointer
и Out
of bounds array index
.
Bug Finder и Code Prover проверяют это правило по-разному и могут показывать различные результаты для этого правила. В Code Prover также можно увидеть различие в результатах, основанную на вашем выборе для опции Verification level (-to)
. Смотрите раздел «Проверка на нарушения стандартов кодирования».
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: указатели и массивы |
Категория: Требуемая |
Категория AGC: Требуется |