Неправильные аргументы к стандартной библиотечной функции
Этот дефект происходит, когда вы используете недействительные аргументы с функцией с плавающей точкой от стандартной библиотеки. Этот дефект берет:
Округление и стандартные программы абсолютного значения
ceil, fabs, floor, fmod
Части и стандартные программы деления
fmod, modf
Экспоненты и логарифмические стандартные программы
frexp, ldexp, sqrt, pow, exp, log, log10
Стандартные программы функции тригонометрии
cos, sin, tan, acos, asin, atan, atan2, cosh, sinh, tanh, acosh, asinh, atanh
Доменные ошибки на стандартной плавающей точке библиотеки функционируют результат в заданных реализацией значениях. Если вы используете функциональное возвращаемое значение в последующих расчетах, вы видите неожиданные результаты.
Фиксация зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Используйте этот список событий, чтобы определить, как аргумент функции получает недопустимые значения. Можно реализовать закрепление на любом событии в последовательности. Если детали результата не показывают историю события, можно проследить использование, щелкните правой кнопкой по опциям по исходному коду и смотрите предыдущие связанные события. См. также Интерпретируют Результаты Polyspace Bug Finder.
Это - хорошая практика, чтобы обработать для доменных ошибок перед использованием стандартной функции плавающей точки библиотеки. Например, прежде, чем вызвать acos
функция, проверяйте, находится ли аргумент в [-1.0, 1.0], и обработайте ошибку.
Смотрите примеры мер ниже.
Если вы не хотите устранять проблему, например, когда вы обрабатываете бесконечности в своем коде, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.
Группа: числовой |
Язык: C | C++ |
Значение по умолчанию: On |
Синтаксис командной строки: FLOAT_STD_LIB |
Удар: высоко |
ID CWE: 227, 369, 682, 873 |
Find defects (-checkers)
| Invalid use of standard library integer routine
| Invalid use of standard library memory routine
| Invalid use of standard library routine
| Invalid use of standard library string routine