MISRA C:2012 Rule 18.1

Указатель, полученный из арифметики на операнде указателя, должен адресовать элемент того же массива, что и этот операнд указателя

Описание

Определение правила

Указатель, полученный из арифметики на операнде указателя, должен адресовать элемент того же массива, что и этот операнд указателя.

Объяснение

Использование недопустимого индекса массива может привести к ошибочному поведению программы. Производные от выполнения индексы массива особенно проблематичны, потому что их невозможно легко проверить путем ручного обзора или статического анализа.

Стандарт C определяет создание указателя на указатель за пределами массива. Правило разрешает использование стандарта C. Удаление указателя на указатель за пределами конца массива вызывает неопределенное поведение и является несовместимым.

Реализация Polyspace

Polyspace® помечает это правило во время анализа как:

Bug Finder и Code Prover проверяют это правило по-разному и могут показывать различные результаты для этого правила. В Code Prover вы также можете увидеть различие в результатах, основанную на вашем выборе для опции. Смотрите раздел «Проверка на нарушения стандартов кодирования».

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Проверяйте информацию

Группа: указатели и массивы
Категория: Требуемая
Категория AGC: Требуется