В компьютерных науках анализ указателей или анализ точек — это метод статического анализа кода , который устанавливает, какие указатели или ссылки кучи могут указывать на какие переменные или места хранения. Это часто является компонентом более сложных анализов, таких как анализ побега . Тесно связанным методом является анализ формы .
(Это наиболее распространенное разговорное использование термина. Во вторичном использовании анализ указателей является собирательным названием как для анализа точек на , определенного, как указано выше, так и для анализа псевдонимов . Анализ точек и псевдонимов тесно связаны, но не всегда эквивалентны. проблемы.)
Для следующего примера программы анализ точек к вычислит, что набор точек к p
равен { x
, y
}.
Можно показать, что как форма статического анализа полностью точный анализ указателей неразрешим . [1] Большинство подходов разумны , но сильно различаются по производительности и точности. Многие проектные решения влияют как на точность, так и на производительность анализа; часто (но не всегда) более низкая точность дает более высокую производительность. Эти варианты включают: [2] [3]
Алгоритмы анализа указателей используются для преобразования собранных необработанных использований указателей (назначения одного указателя другому или назначения указателя другому) в полезный график того, на что может указывать каждый указатель. [4]
Алгоритм Стенсгаарда и алгоритм Андерсена являются распространенными нечувствительными к контексту и потоку алгоритмами для анализа указателей. Они часто используются в компиляторах и имеют реализации в кодовой базе LLVM .