Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование 2 семестр 1 курс.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
523.82 Кб
Скачать

Расположение блоков программы в памяти .

Сегментный и адресный типы данных .

Существует 2 основных типа распределения памяти : статическое и динамическое .

Статическое распределение предполагает , что память под переменные отводятся в начале работы программой единицы и освобождается поле завершения ее работы . Со статической памятью непосредственно связи сегмента данных , в которых хранятся значения глобальных переменных , в процессе выполнения программы – статических переменных . Обращение осуществляется по их именам . память , отводится под статические переменные не используется системой под какие - либо переменные не используется системой под какие – либо переменные не используются .В процессе работы переменные нельзя удалить статическую переменную из памяти и нельзя выделить новый блок в этой памяти .

Динамическое распределение памяти

Динамическое распределение предполагает изменение ее суммарного доступа объема в ходе выполнения программы как в сторону уменьшения , так и в сторону увеличения . При динамическом распределении память отводится под данные и освобождается участки различной длинны , необходимы пользователю . При таком распределение памяти данные не обозначаются именем переменной и обращение к ним производится не по именам , а по ссылке , через ссылочную переменную или указатель (косвенная адресация ). Ссылки указатель содержат адрес блока динамической памяти (Ссылочная переменная содержаться в статической памяти ). Динамические данные , создаваемые и ликвидируют по мере надобности динамические переменные . С динамической памятью связанны динамические структуры , представляет собой данные , размер который в процессе выполняется заранее не известен , или когда память под них отводится в ходе выполнения программы .

Динамические структуры используются в следующих случаях :

  1. Когда используются переменные , имеющие большой размер , необходимые в одних частях программы и не нужные в других .

  2. Когда необходимо построить последовательность или какую – либо другую структуру , размер который изменяется в широких пределах и является трудно предсказуемым.

Ссылочный тип данных . Работа с адресами.

Для работы с адресами в Paskal используется специальный тип Pointer , который называется указательным , а переменная данного типа – указателем. Указатель – переменная , код адреса какого-либо элемента памяти . Тип Pointer занимает 4 байта , состоит из 2х слов : адрес сегмента и смещения , записанные как сплошные 32 бита P:pointer; Однако для работы с адресами может использоваться другой адресный тип , называется ссылочным типом , основная деятельность которого связанна с организацией и работой как с динамической , так и со статическими структурами данных . Сами ссылочные переменные и указатели находится в статической памяти . При объявлении ссылочных переменных обычно строится ссылочный тип данных , но можно непосредственно в Var , хотя различные виды описаний могут привести к несовместимости типов по адресу .

Синтаксис описания переменой ссылочного типа :

Type

«имя типа »=^ «базовый тип »;

Var

  1. «имя ссылочной переменной»: «имя типа»; или

  2. «имя ссылочной переменной» : ^ «базовый тип »;

Пример описания:

Type

P_int=^integer ;

P_Hoat=^real;

Var

Ptr0, ptr1:p_int;

Ptr :^integer;

Ptr_f:p_hoat;

P_ch:^char;

………

Ссылочные переменные Ptr0 и Ptr1 не будут совместимы с Ptr по адресу , не смотря на то что являются ссылками на один тип . В этом случае операция по пересылке адреса невозможна для не совместимых переменных . Представлены несовместимые по адресу переменные являются совместимые по ссылке . то по типу субъекта , на который ссылаются (смотри раз именование ).

Лекция №8

Ссылочный и указательный типы данных. Основные операции с ссылочными переменными. Работа с адресами. Примеры.