Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамическая память
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
SiNaC0m
Доброе время суток, через несколько дней у меня экзамен. Помогите разобраться.
Вот вопрос: "Понятие адреса памяти, сегмента, смещения, нормализованного адреса.
Распределение памяти CMA: cегмент кода программы, сегмент данных, стек, динамическая память (куча).
Типы указатель (Pointer) и ссылка (^ тип)"

Как я понимаю:
Адрес - это номер ячейки в сегменте данных(все оперативной области ПК), он состоит из сегмента и смещения.
В свою очередь сегмент - часть оперативной памяти, не превышающая 64 Кбайта и начинающаяся с числа кратного 16. А смещение показывает в каком месте сегмента хранится заданный адрес(то есть, сколько надо пройти от начала сегмента до нужной ячейки в этом сегменте).
Сегмент кода программы-место в сегменте, отведенное под сам код проги.
Сегмент данных-это непрерывная область оперативной памяти пк.
Стек-простейшая динамическая структура. стек придерживается принципа ЛИФО(ласт ин фёст аут). Выборка и добавление элемента в стек происходит в одном месте.
Динамическая память(куча)- это вся оперативная память ПК, за вычетом сегмента(64), смещения и тела проги.
Типы указателей: Указатель - это переменная, которая хранит адрес в качестве своего значения.
Они(Указатели) бывают типизированные и нетипизированные.
Типизированные - ссылка(^). Пример:
var a : ^real;
b : ^integer;
Типизированный указатель ссылается на какой то определенный тип.
Нетипизированный ссылается на неопределенный.
var c : pointer;
a нельзя присвоить b, для этого необходимо сначала c:=b, а потом a:=c;
Все ли я правильно написал? И что такое нормализированный адрес?
Очень хочется узнать ваше мнение!!!
GoodWind
Адреса задаются совокупностью двух шестнадцатиразрядных слов, которые называются сегментом и смещением. Сегмент - это участок памяти, имеющий длину 65536 байт (64 Кбайт) и начинающийся с физического адреса, кратного 16 (т.е. О, 16, 32, 48 и т.д.). Смещение указывает, сколько байт от начала сегмента необходимо пропустить, чтобы обратиться к нужному адресу.

<>Выборка и добавление элемента в стек происходит с одного конца<>

Сегмент данных - область памяти, выделенная под данные программы (т.е. у каждой программы свой сегмент данных)

ну это так, придирки...
SiNaC0m
GoodWind: Спасибо... Но что такое НОРМАЛИЗОВАННЫЙ адрес???
и еще я не могу понять что значит СМА???
volvo
CMA = Control Memory Address
Вообще-то CMA называется Стандартная Память, в которой хранится DOS и программы... Есть еще UMA (Upper Memory Address) - Верхняя Память, содержащая видеопамять и BIOS...

А нормализованным адресом называется адрес, приведенный к виду, в котором его смещение - в интервале $0 .. $F (от 0 до 15)

Кстати:
Цитата
a нельзя присвоить b, для этого необходимо сначала c:=b, а потом a:=c;
Совсем не обязательно... Можно обойтись без доп. переменной:
a := pointer(b);
, но все равно: нужно приложить дополнительные усилия. Почему? Потому, что такие операции (приведение типа) потенциально очень опасны, и программист должен показать компилятору, что он НЕ ошибся, а сознательно произвел эту операцию...
SiNaC0m
volvo: Большое спасибо.. Не подскажешь, где можно почитать о СМА.

З.Ы. Просьба тему не закрывать. Вопросы по динамической памяти и структурам еще будут, но чуть позже.
SiNaC0m
Доброе время суток Динамические структуры данных: бинарные деревья. Деревья поиска. Сбалансированные деревья
Дерево - это динамическая структура данных, состоящая из узлов и их отношений, образующих иерархическую структуру узлов.
Узлы, которые не имеют потомков, называются листьями. Они(узлы) могут быть любого простого или структуированного типа, но не файлового!!!
Бинарное дерево - это динамическая структура данных, каждый узел которой кроме данных хранит в себе не более двух ссылок на другие двоичные деревья.
Бинарное дерево является рекурсией, так как каждое пеоддерево является в свою очередь самостоятельным деревом.
Дерево поиска - это бинарное дерево, в котором каждый ключ его левого поддерева меньше ключа его узла, а каждый ключ его правого поддерева больше.
Высота дерева определяется количеством его уровней.
Сбалансированное дерево - это двоичное дерево, в котором количество узлов справа и слева отличается не более чем на единицу.
Удаление элементов из дерева:
1) Если узел является листом, то его просто обнуляют.
2) Если узел содержит только одного потомка, то тот встаёт на его место.
3) Если узел имеет двух потомко, то на его место ставится либо самый правый узел его левого поддерева, либо самый левый узел его правого поддерева.
Я прав??? Что еще можно к этому добавить?
З.Ы. Если я хочу узнать про особенности работы 4 параметра в процедуре Blockread и blockwrite, мне нужно заводить новую тему?
Жду ваших дополнений...
Экзамен оказывается у меня завтра, точнее уже сегодня..... Пожелайте мне удачи..... ОНА мне очень нужна!!!
volvo
Цитата
Они(узлы) могут быть любого простого или структуированного типа, но не файлового!!!
Хочешь, приведу работающий пример, где в узлах дерева содержится файловый тип?

Если честно, то это ограничение скорее всего связано с тем, что в структуры нельзя БЫЛО включать поля файловых типов... Сейчас я не знаю, актуально ли это ограничение...

Цитата
Если я хочу узнать про особенности работы 4 параметра в процедуре Blockread и blockwrite, мне нужно заводить новую тему?
Можешь не открывать... Что именно тебя интересует? Какие особенности? Через четвертый параметр возвращается количество реально прочитанных/записанных блоков, если ты его НЕ определяешь, то не возвращается ничего (как будешь отслеживать возможную ошибку чтения/записи?) smile.gif
SiNaC0m
volvo:Большое спасибо!!
Можно тебя попросит: напиши плиз четкое определение записи с вариантной частью...
Моё вот: Записи с произвольным числом вариантов структур - называются записью с вариантами...
Как то криво звучит...
volvo
Ну, я бы привел вот такое определение:
Цитата
В вариантной части типа запись память распределяется более чем для одного списка полей, поэтому доступ к информации может быть осуществлен более чем одним способом. Каждый список полей является вариантом. Варианты налагаются друг на друга в памяти, поэтому в любое время возможен доступ ко всем полям во всех вариантах.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.