нюється процедурою: GetMem (ім'я покажчика, розмір). Розмір - кількість байт, які будуть помічені як зайняті. Він може бути від 1 до 65535 байт. p align="justify"> Вивільнення пам'яті для НЕ типізованих покажчиків
FreeMem (ім'я покажчика, розмір),
Приклад:
Var: pointer;
... (p, 400);
...
FreeMem (p, 400);
...
Процедури для вивільнення динамічній пам'яті:
Mark (p) - запам'ятовує адресу покажчика (p);
Release (p) - вивільняє динамічну пам'ять починаючи від адреси зберігається в (p) до кінця купи.
Ці процедури можуть застосовуватися до типізованим і не типізованим вказівниками.
Приклад:
, p2, p3, p4, p5: ^ integer; (p1); (p2); (p3); (p4); (p5);
...
В
Процедури і функції для роботи з динамічною пам'яттю
Addr (x): pointer; - функція повертає результат типу pointer в якому міститься адреса аргументу (x), де (x) - будь-який об'єкт програми (змінна, масив, об'єкт покажчика);
CSeg: word; - (повертає значення зберігається в регістрі CS) на початку роботи програми в регістрі програми (CS) зберігається сегмент коду;
DSeg: word; - (повертає значення регістра DS) на початку роботи програми в регістрі (DS) зберігається сегмент даних;
MaxAvail: int64; - (повертає в байтах розмір найбільшого безперервної ділянки купи);
MemAvail: int64; - (повертає в байтах розмір загального вільного простору купи);
Ofs (x): word; - (повертає значення зсуву адреси для зазначеного об'єкта (x)) (x) - вираз будь-якого типу або ім'я процедури;
Seg (x): word; - (повертає значення містить сегмент адреси зазначеного об'єкта);
PTR (s, o: word): pointer; - (s - сегмент, o - зміщення) повертає значення типу pointer по заданому сегменту (s) і зміщення (o).
Динамічні структури пам'яті
Переваги динамічної пам'яті стають особливо очевидними при організації динамічних структур. Елементи цих структур пов'язані через адреси. До таких структур належать: стеки, черги, дерева, мережі, ...
Основою моделювання динамічних структур є списки (звичайно безліч динамічних елементів розміщуються в різних областях пам'яті і об'єднаних в логічно упорядковану послідовність за допомогою спеціальних покажчиків, адрес зв'язку). У списку кожен елемент має інформаційне поле і посилання, тобто адресу іншого елемента списку.
Список - лінійна структура даних, за допомогою якої задаються одномірні відносини.
Структури елемента одновимірного списку
Односпрямований список:
В
Двохнаправлений список:
В
Порядок розташування інформаційних і посилальних полів в елементі довільний. p align="justify"> Інформаційна частина може містити поля різних типів. p align="justify"> Посилання повинні бути однотипні.
Залежно від числа посилань список буває односпрямований і двонаправлений.
Лінійний односпрямований список:
В
- голова списку.
Список називається порожнім, якщо вказівник на перший елемент дорівнює Nil: First = Nil;
Лінійний двонаправлений список:
В
- голова списку.
Last - хвіст списку.
Так само існують кільцеві списки, у яких останній елемент вказує на перший.
Приклад Опис елемента однонаправленої списку:
Type Type = ^ zap; point = ^ zap; = record; zap = record;: integer; int1: integer;: string; int2: string;: EL; next: point;; prev: point;
End;
Всі дії над елементами списку (вставка, видалення, перестановка) зводяться до дій з посиланнями. Самі елементи при цьому свого фізичного стану в пам'яті не міняють. p align="justify"> Завдання для роботи з лінійним списком.
1_Созданіе порожнього списку:
Create_Empty_List (var first: ...