Размер сегмента стека устанавливается с помощью директивы
компилятора $M и лежит в пределах от 1024 до 65520 байт. По умол-
чанию размер стека равен 16384 байт.
При каждой активизации (вызове) процедуры или функции в стек
помещается множество локальных переменных. При завершении работы
память, занимаемая локальными переменными, освобождается. В любой
момент выполнения программы общий размер локальных переменных в
активных процедурах и функциях не должен превышать размера сег-
мента стека.
Примечание: Если вы пишете приложение для Windows, то
Windows налагает на сегменты данных и стека специальные
требования, так что рабочий максимум стека и область сег-
мента данных могут быть меньше, чем упомянутые максимальные
области сегмента данных и стека.
Директива компилятора $S используется для проверок перепол-
нения стека в программе. В состоянии {$S+}, принятом по умолча-
нию, генерируется код, осуществляющий проверку переполнения стека
в начале каждой процедуры или функции. В состоянии {$S-} такие
проверки не проводятся. Переполнение стека может вызвать аварий-
ное завершение работы системы, поэтому не следует отменять про-
верки стека, если нет абсолютной уверенности в том, что перепол-
нения не произойдет.