Удалите предположение, что использование абсолютного адреса допустимо
-no-assumption-on-absolute-addresses
Эта опция влияет только на анализ Code Prover.
-no-assumption-on-absolute-addresses удаляет предположение по умолчанию, что абсолютные адреса, используемые в коде, действительны. Если вы используете эту опцию, верификация создает оранжевый Absolute address usage проверяйте, когда вы присваиваете абсолютный адрес указателю. В противном случае проверка по умолчанию является зеленой.
Тип указателя, которому вы присваиваете адрес, определяет начальное значение, сохраненное в адресе. Например, если вы присвоите адрес int* указатель, после этой проверки верификация принимает, что зона памяти, на которую указывает адрес, инициализирована int значение. Значение может быть любым допустимым для типа данных int.
Если вы запускаете анализ из пользовательского интерфейса (Polyspace® только для продуктов), на панели Configuration, можно ввести эту опцию в поле Other. См. Other.
Использование опционных -no-assumption-on-absolute-addresses может увеличить количество оранжевых чеков в вашем коде. Например, в следующей таблице показан дополнительный оранжевый флажок с включенной опцией.
| Использование абсолютного адреса Зеленый | Использование абсолютного адреса оранжевый |
|---|---|
void main() {
int *p = (int *)0x32;
int x;
x=*p;
}В этом примере программное обеспечение создает:
| void main() {
int *p = (int *)0x32;
int x;
x=*p;
}В этом примере программное обеспечение создает:
|
Для наилучшего использования проверки Absolute address usage оставьте этот чек зеленым по умолчанию на начальных этапах разработки. На этапе интегрирования используйте опцию -no-assumption-on-absolute-addresses и обнаружение всех применений абсолютных адресов памяти. Просмотрите их и убедитесь, что адреса действительны.