Квалификатор переменной теряется во время преобразования
Эта проверка деактивирована в Polyspace по умолчанию® по мере анализа You Code. Смотрите Checkers Deactivated in Polyspace как You Code Default Analysis (Polyspace Bug Finder Access).
Этот дефект возникает во время преобразования указателя, когда один указатель имеет квалификатор, а другой - нет. Например, при преобразовании из const int*
в int*
преобразование удаляет const
квалификатор.
Этот дефект применяется только к проектам в С.
Квалификаторы, такие как const
или volatile
в объявлении указателя:
const int* ptr;
const
или volatile
. Эти классификаторы действуют как инструкции компилятору. Для образца, a const
объект не должен изменяться в коде и volatile
объект не должен быть оптимизирован компилятором.Если второй указатель указывает на тот же объект, но не использует тот же квалификатор, то квалификатор на первом указателе больше не действителен. Для образца, если a const int*
указатель и int*
указатель точки на тот же объект, можно изменить объект через второй указатель и нарушить контракт, подразумеваемый const
квалификатор в первом указателе.
Если вы намерены преобразовать один указатель в другой, объявите оба указателя с одинаковыми квалификаторами.
Группа: Программирование |
Язык: C |
По умолчанию: Off |
Синтаксис командной строки: QUALIFIER_MISMATCH |
Влияние: Низкое |
ИДЕНТИФИКАТОР CWE: 704 |