TURBO PASCAL |
Новости
|
Адресный тип. Динамическая память. Адреса и указатели.Динамическая память – это оперативная память ПК, представляемая программно при её работе , за вычетом сегмента данных 164 Кбайта ,стёка(обычно 16 Кбайт) и собственно тела программы (>200-300 Кбайт) Д.п. - это практически единственная возможность обработки массивов данных большой размерности. Сегмент данных - это непрерывная область оперативной памяти в которой размещаются все переменные, объявленные в программе. Д. размещение данных – означает использование Д.П. непосредственно при работе программы. ОЗУ ПК представляет собой совокупность ячеек для хранения информации - байтов, каждый из которых имеет собственный номер. Эти номера – называются адресами ,позволяющими обращаться к любому a`irs памяти. Указатели – гибкое средство управления Д.П.. Это переменная, которая в качестве своего значения содержит адрес байта памяти. В ПК адреса задаются сегментами и 16 разрядными смещениями. Сегмент – это участок памяти имеющий длину 65536(64Кбайта) и начинается с физического адреса , кратного 16. Смещение – указывает, сколько байт от начала сегмента нужно отступить, чтобы обратиться к нужному адресу. Адресное пространство 1 Мбайт – стандартная память ПК. Для адресации в пределах 1 Мбайта нужно 20 двоичных разрядов, которые получаются из 2-х 16 разрядных слов (сегмента и смещения типа word ) =>содержимое сегмента смещается на 4 разряда , освободившиеся правые заполняются нулями. Структура памяти: SYS область – КУЧА – SYS область I^:=2;{в область памяти I заносится 2} Функции: ADDR (x) – возвращает результат типа pointer,в котором содержится адрес аргумента,x- любой объект программы (переменная , процедура, функция) CSEG- возвращает значение, хранящееся в регистре CS микропроцессора. Результат в слове типа word. DSEG - возвращает значение, хранящееся в регистре DS микропроцессора. Результат в слове типа word. MAXAVAIL-возвращает размер в байтах наибольшего непрерывного участка кучи .MAXAVAIL(LONGINT). За вызов процедуры NEW или GETMEM нельзя зарезервировать памяти больше, чем значение, возвращаемое этой функцией. MEMAIAIL(LONGINT)- возвращает размер в байтах общего свободного пространства кучи OFS(Х)-возвращает значение типа WORD, содержащее смещения адреса указанного объекта.(Х)-выражение любого типа или процедура. PTR(seg , ofs) - возвращает значение типа POINTER, по заданному сегменту и смещению SEG(X) - возвращает значение типа WORD, содержащее сегмент адреса указанного объекта. SIZEOF(X)- возвращает длину в байтах внутреннего представления указанного объекта.X- имя переменной, функции или типа. Процедуры: DISPOSE- возвращает в кучу фрагмент динамической памяти ,который был ранее зарезервирован за типизированным указателем. DISPOSE(TP) – типизированный указатель FREEMEM - возвращает в кучу фрагмент динамической памяти ,который был ранее зарезервирован за нетипизированным указателем FREEMEM(P,SIZE) – P-нетипизированный указатель ,SIZE-длинна освобождающегося размера. GETMEM(P,SIZE) – резервирует за нетипизированным указателем фрагмент Д,П, требуемого размера(не более 65521) MARK(PTR) – запоминает текущее значение указателя кучи. PTR- указатель любого типа NEW - резервирует фрагмент кучи для размещения переменной . NEW(TP) - тип указатель RELISE(PTR) – освобождает участок кучи .PTR – указатель любого типа,в котором предварительно было сохранено процедурой MARK значение указателя кучи. Д.П. широко используется для временного запоминания данных при работе с графикой и звуком в ПК. |
На первую страницу
(с)Все права защищеныПо всем интересующим вопросам прошу писать на электронный адрес |