Абсолютный адрес присвоен указателю
Эта проверка появляется, когда абсолютный адрес присвоен указателю.
По умолчанию эта проверка является зеленой. Программное обеспечение принимает неотступно следование за абсолютным адресом:
Адрес допустим.
Тип указателя, которому вы присваиваете адрес, определяет начальное значение, сохраненное в адресе.
Если вы присваиваете адрес int*
указатель, зона памяти, на которую указывает адрес, инициализируется int
значение. Значение может быть чем-либо, допускал тип данных int
.
Анализ делает эти предположения относительно абсолютного использования адреса:
Проверка не отмечает абсолютные адреса, если они включают переменные или адресную арифметику с указателями. Например, x = *(int*)0x7
адрес рассматривается абсолютным адресом. x = *(int*)(0x7 + y)
адрес не является абсолютным адресом, должным его использование переменных.
Если вы присваиваете абсолютный адрес указателю, анализ принимает, что резкое местоположение может содержать любое значение, допускал резкий тип данных. Например, следующий ptr = (int*)0x32
, анализ принимает тот *ptr
может содержать любой int
значение. После последовательности бросков, таких как ptr = (int*)(char*)0x32
, анализ учитывает только наиболее удаленный бросок, в этом случае, int*
.
Чтобы повернуть эту проверку, оранжевую по умолчанию для каждого абсолютного использования адреса, используйте параметр командной строки -no-assumption-on-absolute-addresses
.
Рассмотрите и зафиксируйте абсолютные проверки использования адреса
Группа: Статическая память |
Язык: C | C++ |
Акроним: ABS_ADDR |