Вычитание или сравнение указателей приводит к неопределенному поведению
Этот дефект возникает при вычитании или сравнении указателей, которые являются нулевыми или указывают на элементы в различных массивах. Реляционные операторы для сравнения: >, <, >=, и <=.
При вычитании двух указателей на элементы в одном массиве получается разница между подстрочными индексами двух элементов массива. Аналогично, при сравнении двух указателей с элементами массива результатом является положение указателей относительно друг друга. Если указатели имеют значение null или указывают на различные массивы, операция вычитания или сравнения не определена. Если результат вычитания используется в качестве индекса буфера, это может вызвать переполнение буфера.
Прежде чем вычитать или использовать реляционные операторы для сравнения указателей с элементами массива, убедитесь, что они не имеют значения NULL и указывают на один и тот же массив.
| Группа: Статическая память |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки:
PTR_TO_DIFF_ARRAY
|
| Воздействие: Высокое |
| CWE ID: 469 |