Неправильно выровненные или недопустимые результаты преобразований между типами указателей и целочисленными типами
Небезопасное преобразование между указателем и целым числом проверяет на указатель на целое число и целое число к преобразованиям указателей. Если вы преобразовываете между указателем, intptr_t
, или uintprt_t
и целочисленным типом, таким как enum
, ptrdiff_t
или pid_t
, Polyspace повышает дефект.
Отображение между указателями и целыми числами не всегда сопоставимо со структурой обращения среды.
Преобразование от указателей до целых чисел может создать:
Усеченный или из целочисленных значений области значений.
Недопустимые целочисленные типы.
Преобразование от целых чисел до указателей может создать:
Неправильно выровненные указатели или неправильно выровненные объекты.
Адреса недопустимого указателя.
Где возможно, избегайте преобразования целого числа к указателю или указатель на целое число. Если вы хотите преобразовать указатель void
на целое число, так, чтобы вы не изменяли значение, используйте типы:
C99 — intptr_t
или uintptr_t
C90 — size_t
или ssize_t
Группа: Программирование |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки: BAD_INT_PTR_CAST |
Влияние: носитель |
ID CWE: 465, 466, 587, 758 |