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