Руководство по языку B.Pascal 7

       

Сегмент стека


Размер сегмента стека устанавливается с помощью директивы компилятора $M и лежит в пределах от 1024 до 65520 байт. По умол- чанию размер стека равен 16384 байт.

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

Примечание: Если вы пишете приложение для Windows, то Windows налагает на сегменты данных и стека специальные требования, так что рабочий максимум стека и область сег- мента данных могут быть меньше, чем упомянутые максимальные области сегмента данных и стека.

Директива компилятора $S используется для проверок перепол- нения стека в программе. В состоянии {$S+}, принятом по умолча- нию, генерируется код, осуществляющий проверку переполнения стека в начале каждой процедуры или функции. В состоянии {$S-} такие проверки не проводятся. Переполнение стека может вызвать аварий- ное завершение работы системы, поэтому не следует отменять про- верки стека, если нет абсолютной уверенности в том, что перепол- нения не произойдет.



Содержание раздела