Статическая переменная состоит из идентификатора и значения.

ПОНЯТИЕ УКАЗАТЕЛЯ И ЕГО ОБЪЯВЛЕНИЕ

Динамическая память является непрерывным массивом байтов.

Во время работы программы базовая память компьютера распределяется так.

Перед выполнением любого exe-файла выделяется специальная область памяти, которая называется префиксным сегментом программы.

Данные из этой области памяти используются для управления процессом выполнения программы. В частности, эта область содержит адреса подпрограмм, которые осуществляют обработку прерываний во время нажатия клавиш Ctrl+Break, обработку критических ошибок операционной системы, завершение программы и т.п..

После префиксного сегмента программы размещается сегмент кода основной программы. Каждому программному модулю также выделяется сегмент кода. Кроме того, сегмент кода выделяется для системного модуля.

Типизированные константы и глобальные переменные, объявленные в разделах const и var основной программы, располагаются в сегменте данных.

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

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


 

Эта область памяти называется кучей, или Heap-областью (от англ. heap – куча).

 

Начальный адрес Heap-области хранится в стандартной переменной Неароrg, конечный адрес – в стандартной сменной HeapEnd.

Адрес, которым разделяются занятая и свободная части кучи, хранится в стандартной переменной HeapPtr.

Каждый раз после выделения динамической памяти значение указателя HeapPtr увеличивается.

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

В стандартной переменной FreePtr хранится начальный адрес этой области памяти, а каждая запись в ней содержит информацию о расположении определенной динамической переменной.


Доступ к динамическим переменным осуществляется только по их адресам, но не по идентификаторам, поскольку местонахождение таких переменных в памяти становится известным лишь во время выполнения программы.

 

Для хранения адресов динамических переменных используются указатели СТАТИЧЕСКИЕ переменные ссылочного (указательного) типа.