Реферат: Распределение памяти

Области данных делятся на два класса - статический и

динамический. Статическая область данных имеет постоянное число

ячеек, выделенных ей перед началом счета. Эти ячейки выделяются

на все время счета. Следовательно, на переменную в статической

области данных возможна ссылка по ее абсолютному адресу вместо

пары ( адрес базы, смещение ).

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

счета. Она появляется и исчезает, и всякий раз, когда она

исчезает, теряются все величины, хранящиеся в ней.

2. Описатели

Если компилятор знает все характеристики переменных во

время компиляции, то он может сгенерировать полностью команды

обращения к переменным, основываясь на этих характеристиках. Но

во многих случаях информация может задаваться динамически во

время счета. Например, в АЛГОЛе не известны нижняя и верхняя

границы размерностей массивов, а в некоторых языках тип

фактических параметров не соответствует точно типу формальных

параметров. В таких случаях компилятор не может сгенерировать

простые и эффективные команды, так как он должен учитывать все

возможные варианты характеристик.

Чтобы решить эту задачу, компилятор выделяет память не

только для переменных, но и для их описателей, которые содержат

атрибуты ( характеристики ), определяемые во время счета. Этот

описатель заполняется и изменяется по мере того, как становятся

известными и меняются характеристики при счете.

Возьмем простой пример: если формальный параметр является

простой переменной и тип соответствующего фактического параметра

может меняться, фактический параметр, передаваемый процедуре,

может выглядеть, например, так:

К-во Просмотров: 807
Бесплатно скачать Реферат: Распределение памяти