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