TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

От автора

 

 

 

Адресный тип. Динамическая память. Адреса и указатели.

Динамическая память – это оперативная память ПК, представляемая
программно при её работе , за вычетом сегмента данных 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
значение указателя кучи.
Д.П. широко используется для временного запоминания данных при
работе с графикой и звуком в ПК.

На первую страницу

 

Rambler's Top100 PROext: Top 1000 Rambler's Top100
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz