Статическое и динамическое связывание

Локальная область памяти - область памяти, которая выделяется в начале выполнения некоторого фрагмента результирующей программы (процедуры, функции и т.п.) и может быть освобождена по завершении выполнения этого фрагмента. Доступ к локальной области из-за пределов фрагмента в котором она определена, всегда запрещен.

Глобальная область памяти - это область памяти, которая выделяется один раз при инициализации программы и действует все время выполнения. Глобальная область памяти доступна из любой части программы, однако, возможно с какими-либо ограничениями, определяемыми языком программирования.

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

Динамическая область памяти - область памяти, размер которой на этапе компиляции не известен. В этой области памяти размещаются переменные, размер которых может изменяться: динамические массивы, экземпляры классов (объектов, в объектно-ориентированных языках программирования) и т.п. Для динамической памяти компилятор не может выделить адрес, вместо этого он порождает фрагмент кода, который отвечает за распределение памяти (выделение и освобождение) в момент выполнения программы. При использовании динамической памяти, говорят о динамическом связывании области памяти и лексической единицы входного языка.

Загрузчики


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: