Покажчики і динамічна пам'ять

Тема Покажчики. Динамічні структури данних24

Всі змінні, оголошені в програмі, розміщуються в одній безперервній області оперативної пам'яті, яка називається сегментом даних. Локальні змінні розміщуються в стек.

Динамічна пам'ять - це оперативна пам'ять ПК, що надається програмою при її роботі, за вирахуванням сегмента даних, стека і власне тіла програми. Вся динамічна пам'ять в Object Pascal розглядається як суцільний масив байтів, який називаетсякучей.

Статичне розміщення здійснюється компіляторомTurbo / Object Pascal в процесі компіляції програми.

Динамічне розміщення даних означає використання динамічної пам'яті безпосередньо при роботі програми. При динамічному розміщенні заздалегідь не відомі ні тип, ні кількість розміщуваних даних.

Динамічними структурами даних вважаються такі, розмір яких в процесі роботи програми заздалегідь не відомий або змінюється і (або) для яких місце в пам'яті ПК відводиться під час виконання програми.

Паскаль надає в розпорядження програміста гнучкий засіб керування динамічною пам'яттю - так звані покажчики.

Покажчики і динамічна пам'ять

Рис.1. Облікова структура даних

У Турбо Паскалі можна оголошувати покажчик і не пов'язувати його при цьому з будь-яким конкретним типом даних. Для цього служить стандартний тип POINTER, наприклад:

Покажчики такого роду будемо називати нетипізований. Оскільки нетипізовані покажчики не пов'язані з конкретним типом, з їх допомогою зручно динамічно розміщувати дані, структура і тип яких змінюються в ході роботи програми.

цілком допустимо, в той час як

заборонено, оскільки Р1 і Р3 вказують на різні типи даних. Це обмеження, проте, не поширюється на нетипізовані покажчики, тому ми могли б записати

і тим самим досягти потрібного результату.

Читач має право поставити питання, чи варто було вводити обмеження і тут же давати кошти для їх обходу. Вся справа в тому, що будь-яке обмеження, з одного боку, вводиться для підвищення надійності програм, а з іншого - зменшує потужність мови, робить його менш придатним для якихось застосувань. У Турбо Паскалі нечисленні винятки щодо типів даних надають мові необхідну гнучкість, але їх використання вимагає від програміста додаткових зусиль і таким чином свідчить про цілком усвідомленому дії.

Схожі статті