11.4. Управление размерами области кучи и стека

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

{$М Стек, МинимумКучи, МаксимумКучи }

при компиляции программы. Эта директива должна быть в первых строках основной программы (в модулях она игнорируется). При указании размеров кучи в директиве {$М...} помните, что программа не будет выполняться, если свободной памяти, оставшейся после загрузки выполнимого файла, будет меньше, чем задано минимальным (нижним) значением МинимумКучи. Всегда должно выполняться условие

МинимумКучи <= МаксимумКучи.

Диапазон значений области стека — от 1024 до 65535 байт (1К...64К), а обоих параметров кучи — от 0 до 655360 байт (0...640К). Максимальное значение объема кучи может быть больше, чем объем реально свободной памяти. В таком случае кучей будет использоваться вся свободная память.

Если директива {$М...} не указана, то значения минимального (нижнего) и максимального (верхнего) размеров кучи устанавливаются равными 0 и 655360 соответственно. Это означает, что под кучу будет использоваться вся оставшаяся в ПЭВМ свободная память.

Можно установить эти параметры в среде программирования, используя меню Options/Compiler/Memory.

Реальная необходимость в явном задании размеров стека и памяти возникает лишь при запуске субпроцессов и организации резидентных программ.