Неявное масштабирование в арифметике указателя может быть проигнорировано
Этот дефект возникает, когда Polyspace ® Bug Finder™ считает, что вы игнорируете неявное масштабирование в арифметике указателя.
Например, дефект может возникнуть в следующих ситуациях.
| Ситуация | Риск | Возможное исправление |
|---|---|---|
Вы используете sizeof оператор в арифметических операциях над указателем. | Арифметика указателя уже неявно масштабируется по размеру типа данных указанной переменной. Следовательно, использование | Не использовать sizeof оператор в арифметике указателя. |
| Для указателя выполняются арифметические операции, а затем применяется приведение. | Арифметика указателя неявно масштабируется. Если это неявное масштабирование не учитывается, приведение результата арифметики указателя приводит к непреднамеренным результатам. | Применить приведение перед арифметикой указателя. |
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Исправление может быть реализовано для любого события в последовательности. Если сведения о результатах не отображают историю событий, можно выполнить обратную трассировку, щелкнув правой кнопкой мыши параметры в исходном коде и просмотреть предыдущие связанные события. См. также раздел Интерпретация результатов поиска ошибок в интерфейсе пользователя Polyspace Desktop.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к результату или коду, чтобы избежать другой проверки. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки: BAD_PTR_SCALING |
| Воздействие: среднее |
| CWE ID: 468 |