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