Розглянуті раніше структури даних були статичними.
Це означає, що пам'ять під ці дані виділялася на етапі компіляції. Таке виділення пам'яті не завжди зручно, тому що заздалегідь важко передбачити, наприклад, розмір масиву для сортування або число рівнянь в системі. Тому в Турбо Паскалі існує можливість виділення пам'яті не на етапі компіляції, а на етапі виконання програми - динамічна пам'ять.
Процедура виділення пам'яті пов'язана з процедурою її звільнення після використання. У Турбо Паскалі є три пари процедур виділення-звільнення пам'яті. New - Dispose, GetMem - FreeMem, Mark - Release. Найчастіше використовується пара New для виділення пам'яті і Dispose для її звільнення. Підкреслимо, що використання Dispose для звільнення виділеної динамічної пам'яті не є обов'язковим, після виходу з програми динамічна пам'ять звільняється автоматично, але часте використання процедури виділення пам'яті без її звільнення може привести до стану неможливості подальшого виділення пам'яті і до зупинки програми.
На початку програми вводиться 5 записів пацієнтів. Введення першого запису описаний окремо від інших для ініціалізації покажчиків (зокрема, покажчика pred на попередній запис, яка раніше не існувала і визначається тільки після введення першого запису). Для кожного запису спочатку посилальному полю v присвоюємо nil, що означає відсутність наступному записі. Надалі, при виділенні пам'яті наступного запису процедурою new в це поле записується поточний покажчик, але не для поточної, а для попереднього запису. В останній же записи на місці v залишається nil.
Потім в програмі описано видалення записів пацієнтів з тиском, великим 140. однозв'язного список проглядається з початку, для чого поточному покажчику tek присвоюється значення perv покажчика на перший запис. Проглядається поле тиск tek ^ .davl для поточного запису і якщо воно більше 140, запис підлягає видаленню. При цьому між діями, чи є видаляється запис першої чи ні.
Якщо видаляється запис остання (tek ^ .v = nil), то слід в посилальної частини попереднього запису встановити ознака кінця списку pred ^ .v: = nil. якщо ця попередня запис існує (перелік не порожній, тобто віддалені не всі записи). Якщо ж видалені всі записи, слід встановити perv: = nil.
Далі в програмі слід друк залишилися записів, якщо перелік не порожній. Встановлюємо поточний покажчик на перший запис і виводимо на екран інформаційні поля fio і davl. потім переходимо до наступного запису tek: = tek ^ .v.