Указатель обозначается как внешние границы
Эта проверка вычеркивания указателя определяет, является ли указатель NULL или указывает за его пределы. Проверка происходит только тогда, когда вы высчитываете указатель, а не тогда, когда вы переназначаете другому указателю или передаете указатель на функцию.
Сообщение о проверке показывает смещение указателя и buffer size в байтах. Указатель указывает за пределы своих границ, когда сумма смещения и размер указателя превышает buffer size.
Буфер: Когда вы присваиваете адрес указателю, указателю выделяется блок памяти. Вы не можете получить доступ к памяти за пределами этого блока с помощью указателя. Размер этого блока - buffer size.
Иногда, вместо определенного значения, размер может быть областью значений. Например, если вы создаете буфер динамически, используя malloc
с неизвестным входом для размера, Polyspace® принимает, что размер массива может принимать полную область значений значений, разрешенных типом входных данных.
Смещение: Вы можете переместить указатель в пределах разрешенного блока памяти с помощью арифметики указателя. Различие между начальным местоположением указателя и его текущим местоположением является смещением.
Иногда, вместо определенного значения, смещение может быть областью значений. Например, если вы получаете доступ к массиву в цикле, смещение изменяет значение в каждой итерации цикла и принимает область значений значений по всему циклу.
Например, если указатель указывает на массив:
Этот buffer size является размером массива.
Смещение - это различие между началом массива и текущим местоположением указателя.
Просмотрите и исправьте незаконно размененные проверки указателя
Группа: Статическая память |
Язык: C | C++ |
Акроним: ВПЛ |