Вы находитесь на странице: 1из 1

В общем случае объем памяти произвольной программы на ПАСКАЛЕ за-

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


ления внутренней памятью компьютера. При выполнении программы на
ПАСКАЛЕ внутренняя память компьютера делится на три части (рис. 4.1):
– сегмент данных, который предназначен для размещения глобальных пе-
ременных. Указанные переменные объявляются в секции var программы на
ПАСКАЛЕ;
– стек, предназначенный для размещения фактических параметров, ло-
кальных переменных, значений, возвращаемых функциями и адресов возвра-
та вызываемых подпрограмм ПАСКАЛЯ. Вызов каждой подпрограммы ведет
к размещению соответствующих данных в стеке, а выход из подпрограммы – к
их удалению. Подчеркнем, что для параметров-переменных в стеке запомина-
ется только адрес переменной из вызывающей программы, а в случае параме-
тров-значений в стек будет помещена копия данных из списка фактических
параметров;
– куча (heap), предназначенная для размещения динамических перемен-
ных. Указанные переменные создаются при помощи процедуры new и удаля-
ются из памяти при помощи процедуры dispose.

Сегмент
данных Стек Куча

Vs(n)
– фактические
параметры;
– локальные
переменные;
– значения Vh(n)
Vd(n)
функций;
– глобальные – значения – динамические
переменные функций переменные

Рис. 4.1. Управление внутренней памятью

Таким образом, оценка объема памяти предполагает вычисление следую-


щих характеристик программы (рис. 4.1):
Vd(n) – объем памяти, занимаемый глобальными переменными в сегменте
данных;
Vs(n) – объем памяти, занимаемый фактическими параметрами и локальны-
ми переменными в стеке;
Vh(n) – объем памяти, занимаемый динамическими переменными в куче.
Обычно в среде Turbo PASCAL 7.0 требуется, чтобы Vd(n)  64 Кбайт, Vs(n) 
16 Кбайт и Vh(n)  256 Кбайт. Размеры стека и кучи могут быть изменены при
помощи директив компилятора или через систему меню среды программиро-
вания.

97

Оценить