Выделенная память не совпадает с целевым указателем
Неправильно выделенный размер объекта для броска происходит во время преобразования указателя, когда адрес указателя неправильно выравнивается. Если указатель преобразован в различный тип указателя, размер выделенной памяти должен быть кратным размеру целевого указателя.
Разыменование неправильно выровненного указателя имеет неопределенное поведение и может заставить вашу программу отказывать.
Предположим, что вы преобразовываете указатель ptr1
в ptr2
. Если ptr1
указывает на буфер байтов N
, и ptr2
является указателем
, где type *
является байтами sizeof(type)
n
, убедитесь, что N
является целочисленным кратным n
.
Смотрите примеры мер ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Комментарии.
Группа: статическое ЗУ |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки: OBJECT_SIZE_MISMATCH |
Влияние: высоко |
ID CWE: 704 |