Процедура Dispose
Динамічну пам’ять можна не тільки розподіляти, але й вивільняти. Процедура Dispose(P), де P – змінна типу «вказівник», знищує динамічну змінну, на яку вказує вказівник Р. Кожен повторний виклик оператора New повинен попереджатися викликом оператора Dispose. Ця процедура не міняє значення вказівника Р, а тільки повертає в купу пам’ять, раніше зв’язану з цим вказівником. При цьому повторне використання процедури до вільного вказівника призведе до помилки часу виконання. Для уникнення такої помилки звільнений вказівник можна помітити зарезервованим словом NIL.
Dispose(P);
Dispose(Nil);
Підсумок
Крім звичайних змінних, пам’ять для яких виділяється ще в процесі компіляції, існують також динамічні, які створюються і знищуються під час роботи програми. Щоб користуватися такими зміннми, слід використовувати вказівники. Вказівники бувають типізованими і нетипізованими. З ними можлива операція розіменування. Для створення нової змінної динамічного типу використовується процедура New(), для знищення – Dispose().
Питання по темі
1. Який Pascal-оператор дає змогу визначити адресу змінної?
а) ADDR
б)@
в)
2. Який стандартний тип описує нетипізований вказівник
3. Яка директива компілятора керує об’ємом динамічної розподіленої пам’яті?
а) {$F}
б) {$K}
в) {$M}
4. Яка процедура створює нову динамічну змінну?
5. Яка процедура знищує динамічну змінну?
Лекція 8
Тема 2 Об’єктно-орієнтоване програмування в Pascal
Динамічні об’єкти і процедура New
Розширене використання оператора New
Виявлення помилок конструктора
Ключове слово INHERITED
Деструктори
Підсумок
Питання по темі
Динамічні об’єкти і процедура New
Так само, як і будь-які інші типи даних в Pascal-i, об’єкти можна розміщувати в динамічній пам’яті і працювати з ними, використовуючи вказівники. Спеціально для роботи з динамічними об’єктами Pascal включає кілька вдосконалених процедур для розміщення і видалення об’єктів з пам’яті найбільш ефективним способом.
Одним з найпростіших способів розміщення об’єктів у пам’яті є використання процедури New, що традиційно застосовується для роботи з вказівниками.
VAR
Sum:Real;
S: ^TStudent;
…
Дата добавления: 2015-08-26; просмотров: 881;