-allow-ptr-arith-on-struct)Разрешить арифметику указателя на поле структуры, чтобы оно указывало на другое поле
Этот параметр влияет только на анализ программы проверки кода.
Укажите, что указатель, назначенный полю структуры, может указывать за пределами его границ, пока он указывает внутри структуры.
Пользовательский интерфейс (только для настольных ПК): в конфигурации проекта параметр находится в узле Проверить поведение. Другие параметры, которые также необходимо включить, см. в разделе Зависимость.
файл командной строки и параметров: Использовать параметр -allow-ptr-arith-on-struct. См. раздел Сведения о командной строке.
Используйте эту опцию, чтобы ослабить проверку для незаконно удаленных указателей. После назначения указателя полю структуры можно выполнить арифметику указателя и использовать результат для доступа к другому полю структуры.
Указатель, назначенный полю структуры, может указывать за пределами границ, налагаемых полем, пока он указывает внутри структуры. Например, в следующем коде, если вы не используете эту опцию, при проверке появится красный Illegally dereferenced pointer проверка:
void main(void) {
struct S {char a; char b; int c;} x;
char *ptr = &x.b;
ptr ++;
*ptr = 1; // Red on the dereference, because ptr points outside x.b
}
Указатель, назначенный полю структуры, может указывать только в пределах границ, налагаемых полем.
Проверка не позволяет использовать указатель с отрицательными значениями смещения. Такое поведение происходит независимо от выбора опции Включить арифметику указателей для всех полей.
Использование этой опции может несколько увеличить количество оранжевых чеков. Опция ослабляет ограничение, которое указатель на поле структуры не может указывать на другие поля структуры. В обмен на ослабление этого ограничения проверка теряет точность на границе полей внутри структуры и обрабатывает структуру в целом. Ранее зеленые перепады указателей теперь могут стать оранжевыми.
Используйте этот параметр, если соблюдается политика просмотра только красных чеков и необходимо обойти красные чеки из арифметики указателей в структуре.
Перед использованием этой опции рассмотрите затраты на использование арифметики указателей в различных полях структуры.
В отличие от массива, элементы структуры могут иметь различные типы данных. Для эффективного хранения структуры используют заполнение, чтобы учесть это различие. При увеличении указателя, указывающего на элемент структуры, можно не указывать на следующий элемент. При отмене привязки этого указателя нельзя полагаться на то, что вы читаете или пишете.
Эта опция доступна только при установке Source code language (-lang) кому C.
Параметр: -allow-ptr-arith-on-struct |
| По умолчанию: Откл. |
Пример (проверка кода): polyspace-code-prover -sources |
Пример (сервер проверки кода):
polyspace-code-prover-server -sources |