Проблема
Недопустимое использование стандартной целочисленной стандартной программы библиотеки происходит, когда вы используете недействительные аргументы с целочисленной функцией от стандартной библиотеки. Этот дефект берет:
Преобразование символов
toupper, tolower
Символьные проверки
isalnum, isalpha, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit
Целочисленное деление
div, ldiv
Абсолютные значения
abs, labs
Фиксация
Фиксация зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Можно реализовать закрепление на любом событии в последовательности. Если детали результата не показывают историю события, можно проследить использование, щелкните правой кнопкой по опциям по исходному коду и смотрите предыдущие связанные события. См. также Интерпретируют Результаты Polyspace Bug Finder.
Смотрите примеры мер ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.
Пример - абсолютное значение большого отрицания
#include <limits.h>
#include <stdlib.h>
int absoluteValue(void) {
int neg = INT_MIN;
return abs(neg);
}
Входное значение к abs
INT_MIN
. Абсолютное значение INT_MIN
INT_MAX+1
. Этот номер не может быть представлен типом int
.
Коррекция — изменяет входной параметр
Одна возможная коррекция должна измениться, входное значение, чтобы соответствовать возвратило тип данных. В этом примере измените входное значение в INT_MIN+1
.
#include <limits.h>
#include <stdlib.h>
int absoluteValue(void) {
int neg = INT_MIN+1;
return abs(neg);
}