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