Деление целого числа нулем
Integer division by zero происходит, когда знаменатель деления или операции по модулю может быть целым числом с нулевым знаком.
Деление на нуль может привести к катастрофическому отказу программы.
Фиксация зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Используйте этот список событий, чтобы определить, как переменная знаменателя получает нулевое значение. Можно реализовать закрепление на любом событии в последовательности. Если детали результата не показывают историю события, можно проследить использование, щелкните правой кнопкой по опциям по исходному коду и смотрите предыдущие связанные события. См. также Интерпретируют Результаты Polyspace Bug Finder.
Это - хорошая практика, чтобы проверять на нулевые значения знаменателя перед делением и обработать ошибку. Вместо того, чтобы выполнить деление непосредственно:
res = num/den;
res = div(num, den);
Смотрите примеры мер ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.
Группа: числовой |
Язык: C | C++ |
Значение по умолчанию: на |
Синтаксис командной строки: INT_ZERO_DIV |
Удар: высоко |
ID CWE: 189, 369 |