Анализ указателя

редактировать

В информатике, анализ указателя или анализ точек - это метод статического анализа кода, который устанавливает, какие указатели или ссылки на кучу могут указывать на какие переменные, или места хранения. Часто это компонент более сложных анализов, таких как анализ побега. Тесно родственный метод - анализ формы.

(это наиболее распространенное употребление термина в разговорной речи. Вторичное использование имеет анализ указателя как собирательное название для обоих анализов точек, определенных выше, и анализ псевдонимов. Анализ точек и псевдонимов тесно связаны, но не всегда равнозначны.)

Содержание
  • 1 Пример
  • 2 Введение
  • 3 Алгоритмы
  • 4 Ссылки
  • 5 Библиография
Пример

Для следующей примерной программы анализ точек будет вычислять, что набор точек для pравен {x, y}.

int x; int y; int * p = unknown ()? x: y;
Введение

Методы различаются по производительности и точности. Для больших программ могут потребоваться некоторые компромиссы, чтобы завершить анализ в разумные сроки и в разумные сроки. Два примера этих компромиссов:

  • Обработка всех ссылок из структурированного объекта как от объекта в целом. Это известно как нечувствительность к полю или нечувствительность к структуре.
  • Игнорирование потока управления при анализе того, какие объекты назначены указателям. Это известно как контекстно-нечувствительный анализ указателя (при игнорировании контекста, в котором выполняются вызовы функций) или нечувствительный к потоку анализ указателя (при игнорировании потока управления внутри процедуры).

Недостатком этих упрощений является то, что вычисляемый набор объектов, на который указывает, может стать менее точным.

Алгоритмы

Алгоритмы анализа указателя используются для преобразования собранных данных об использовании необработанных указателей (присвоение одного указателя другому или назначение указателя, указывающего на другой) в полезный график того, что может каждый указатель указать на.

Двумя основными алгоритмами являются алгоритм Стинсгаарда и.

Список литературы
Библиография
Последняя правка сделана 2021-06-02 09:17:45
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте