MISRA C++:2008 Rule 5-0-15

Индексация массива должна быть единственной формой адресной арифметики с указателями

Описание

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

Индексация массива должна быть единственной формой адресной арифметики с указателями.

Объяснение

Можно пересечь массив двумя способами:

  • Постепенно увеличьте или постепенно уменьшите индекс массива, и затем используйте индекс массива, чтобы получить доступ к элементу.

  • Постепенно увеличьте или постепенно уменьшите указатель на массив и затем разыменуйте указатель.

Первый метод более ясен и менее подвержен ошибкам.

Все другие формы явной адресной арифметики с указателями вводят риск доступа к непреднамеренным ячейкам памяти.

Реализация Polyspace

Флаги средства проверки:

  • Арифметические операции на всех указателях, например, p+I, I+p и p-I, где p указатель и I целое число..

  • Индексация массива на указателях немассивов.

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

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

Группа: Выражения
Категория: необходимый
Введенный в R2013b