MISRA C:2012 Rule 18.1

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

Описание

Управляйте определением

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

Объяснение

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

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

Реализация Polyspace

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

Bug Finder и Code Prover проверяют это правило по-другому и могут показать различные результаты для этого правила. В Code Prover можно также видеть различие в результатах на основе выбора для опции Verification level (-to) (Polyspace Code Prover). Смотрите проверку на кодирование стандартных нарушений.

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

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

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

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