Динамическое распределение оперативной памяти ЭВМ
Напомню:
· информация доступная для обработки процессором ЭВМ должна быть размещена в оперативной памяти,
· информационный объект (ИО) – фрагмент оперативной памяти ЭВМ,
· идентификатор ИО – символьное имя ИО, используемое в языках программирования.
· структура ИО (тип или побитная интерпретация содержимого ИО) указывается в соответствующих операторах описания идентификаторов ИО (Var, Const, Procedure).
Вывод: идентификатор (имя ИО) однозначно определяет структуру ИО.
Опр. Переменные (ИО), которые в момент описания наделяются не только структурой, но и конкретным адресом (местом) в оперативной памяти называются - статическими ИО.
Опр. Переменные (ИО), которые в момент описания наделяются только структурой (типом) называются - динамическими ИО.
Команда «выделить нужный объем оперативной памяти для динамической переменной» дается отдельным оператором! Если потребность в динамической переменной отпадает (расчеты проведены), то занятый динамической переменной фрагмент памяти можно освободить и использовать его для иных целей. Эта команда также дается отдельным оператором.
В остальном: области и техника использования динамических переменных ничем не отличаются от программирования статических переменных.
Синтаксис оператора описания динамических переменных:
Var И1, И2, …, Иn: ^ ТипИО;
Где Var- стандартное ключевое слово оператора,
И1, И2, …, Иn - стандартный перечень имен - идентификаторов (через стандартный разделитель – запятая),
: - стандартный разделитель оператора – двоеточее,
^- специальный ключевой символ (тильда),
ТипИО; - название типа описываемых переменных.
Пример:
Type TT=array[1..1000] of real; {TT – название новой структуры (типа) переменных, которые образуются последовательностями из тысячи вещественных чисел стандартного типа real }
Var a, b, gg:^TT; {описание динамических переменных}
Семантика этого оператора: запомни идентификаторы a, b, gg, как имена динамических переменных типа TT!
Выделение памяти для динамической переменной Иn осуществляется операторами:
New(Иn); {семантика: выделить для динамической переменной Иn фрагмент памяти соответствующий указанному в описании типу этой переменной, т.е. 6000 байт ! }
или
GetMemory(Иn , Nбайт); {семантика: выделить для динамической переменной Иn фрагмент памяти размером Nбайт байт !}.
Освобождение памяти от динамической переменной Иn осуществляется (парными к исходным) операторами:
Dispose(Иn); {семантика: освободить память ранее отведенную для динамической переменной Иn },
или, если для отведения памяти использовался оператор GetMemory,
FreeMemory(Иn , Nбайт); {семантика: освободить память ранее отведенную для динамической переменной Иn размером Nбайт байт}.
Во всех “исполнимых” операторах Pascal названия динамической переменной должно сопровождаться символом “^” (тильда).
Пример: a[3]^:=2.5*b^[8]; {внести в третий элемент динамического массива А число 2.5 умноженное на восьмой элемент динамического массива B!}.
Дата добавления: 2021-12-14; просмотров: 328;