Переполнение из операции между неподписанными целыми числами
Этот дефект возникает, когда операция с неподписанными целочисленными переменными может привести к значениям, которые не могут быть представлены типом данных результата. Тип данных переменной определяет количество байтов, выделенных для хранения переменной, и ограничивает диапазон допустимых значений.
Точное распределение ресурсов хранения для различных типов с плавающей запятой зависит от процессора. Посмотрите Target processor type (-target).
Стандарт C11 утверждает, что неподписанные целочисленные переполнения приводят к переносу. Однако поведение обтекания не всегда может быть желательным. Например, если результат вычисления используется в качестве размера массива и вычисление переполняется, размер массива значительно меньше, чем ожидалось.
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Исправление может быть реализовано для любого события в последовательности. Если сведения о результатах не отображают историю событий, можно выполнить обратную трассировку, щелкнув правой кнопкой мыши параметры в исходном коде и просмотреть предыдущие связанные события. См. также раздел Интерпретация результатов поиска ошибок в интерфейсе пользователя Polyspace Desktop.
Устранить дефект можно путем:
Использование большего типа данных для результата операции для согласования всех значений.
Проверка значений, которые приводят к переполнению, и выполнение соответствующей обработки ошибок. Например, в коде обработки ошибок можно переопределить поведение обхода по умолчанию для переполнений и реализовать поведение насыщения.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к результату или коду, чтобы избежать другой проверки. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.
| Группа: Числовые |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: UINT_OVFL |
| Воздействие: Низкий |
| CWE ID: 128, 131, 189, 190, 191, 192 |
Find defects (-checkers) | Float overflow | Integer overflow