Переменные в тексте программы описываются в разделе описания переменных. Например:
Var a, b : integer;
s : string;
m : array [1..100] of real;
Такие «обычные» статические переменные располагаются в части оперативной памяти компьютера, называемой сегментом данных (64 Кб). Перед исполнением программы в сегменте данных резервируются участки памяти, размер которых соответствует типу переменных, описанных в разделе описания переменных (VAR).
Кроме того, программист имеет возможность использовать в своей программе динамические переменные, память для которых резервируется уже в процессе исполнения программы и затем, если в них больше нет необходимости, может быть освобождена. Такие переменные располагаются в другой части оперативной памяти компьютера. Такая динамически распределяемая память называется кучей(Heap-областью).
Необходимость в использовании динамических переменных возникает в следующих случаях:
1. Программа должна обрабатывать большие объемы данных (более 64 Кб).
2. Программа должна обрабатывать данные, объем памяти для хранения которых заранее неизвестен.
3. Тип обрабатываемых данных заранее неизвестен.
4. Программа использует динамические структуры данных (стек, очередь, двунаправленный список, дерево, граф и т.п.).
При работе с динамическими переменными возникает необходимость работы с данными ссылочного типа, или указателями.