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