logo
TurboProlog / Документация / TOM_2

Управление распределением памяти.

Поскольку программы могут иметь индивидуальные потребности в различ-

ных областях памяти, то вам предоставляется возможность управлять распре-

делением памяти:

-----------------------------------------------------------------

Стек Чтобы позволить большую рекурсию в программах, в которых

хвостовая рекурсия не может быть сокращена, вы можете

увеличить размер стека, выбирая значение в меню

O/C/Memory Alocation/Stack.

Исходный Вы можете увеличить возможности по исходному тексту

текст путем использования присоединяемых файлов и разбиения

вашей программы на модули.

Код По умолчанию на код выделяется 16 Кбайт. Это можно

изменить, используя директиву компилятора code. Если

размер кода становится проблемой, вам следует разбить

вашу программу на модули.

В очень больших проектах вы можете придать вашему коду

оверлейную структуру, используя оверлейный редактор

связей; это означает, что размер кода неограничен.

След По умолчанию, под след отводиться только 5 параграфов,

потому что обычно след не нужен. Однако, это можно

изменить директивой компилятора trail (см. стр.65

оригинального руководства) или значением меню O/C/Memory

Alocation/Trail Array.

Куча Когда области для стека, исходного текста, кода и следа

зарезервированы, вся остающаяся память используется под

кучу и глобальный стек.

-----------------------------------------------------------------

Стандартный предикат storage выдает допустимые размеры (в байтах)

для трех используемых во время выполнения областей памяти (стека, кучи и

следа соответственно):

storage(РазмерСтека, РазмерКучи, РазмерСледа)

Действительное значение РазмерКучи может быть больше, чем показывает

предикат storage, поскольку могут быть куски памяти, хранимые в свободных

списках. Предикат storage выдает тот размер, в котором вы можете быть

уверены, что он у вас есть, если грузите файл или выходите из оперативной

системы.