Динамические структуры данных
Для практики программирования важны 2 фактора (конфликтующих друг с другом): в ремя выполнения программы о бъем занимаемой памяти. Из-за ограниченности ОП иногда важнее обеспечить max экономию памяти даже ценой потери скоростных характеристик.
Память выделяется на этапе компиляции. Статическое Динамическое Память выделяется во время выполнения программы. Распределение памяти Для организации динамической памяти используются ссылочные типы данных – указатели.
– это переменная, которая в качестве своего значения содержит адрес первого байта памяти, по которому записаны данные. Указатель (ссылка) Занимает в памяти 4 байта.
Переменной, на которую указывает указатель не обязательно присваивать имя. К ней можно обращаться через имя указателя. Для хранения динамических переменных выделяется спец. область памяти, называемая кучей.
Формат описания указателя type =^ ; var : < имя типа>; или var :^ ;
Пример type u kas = ^integer; var p : ukas; p 1 : ^real; p2 : ^char; p3 : ^string;
осуществляется с помощью правила разадрессации ( разыменования ) у казателя: Доступ к переменной по указателю Пример p^ := 5 ; p1^ := 3.14 ; p2^ := $ ; p3^ := Лицей 6 ;
{отводит место для хранения динамической переменной p^ и присваивает её адрес указателю p} Динамические процедуры new (p); {освобождает память, занимаемую динамической переменной p^. После этого значение указателя p неопределенно –Nil (никуда не указывает) – const ссылочного типа } dispose (p);
Пример program Ukasatel ; var p : ^integer; begin new( p ); p ^:=5; dispose( p ); end. pp^ Nil 5