Процедура New
Процедура New(P), де P – змінна типу «вказівник», створює нову динамічну змінну того типу, на який посилається вказівник, і встановлює значення змінної Р таким чином, щоб воно вказувало на цю нову динамічну змінну:
VAR
P1: ^Integer;
P2: ^String;
Begin
New(P1);
New(P2);
….
End;
В цьому прикладі після виконання команди New(P1) вказівник Р1 дістає значення рівне тому, яке досі мав вказівник HeapPtr, а значення вказівника HeapPtr буде збільшене на 2, оскільки довжина внутрішнього представлення типу INTEGER, з яким зв’язаний вказівник Р1, дорівнює 2 байти. Оператор New(P2) викликає виділення блоку пам’яті довжиною 256 байтів і зміщення вказівника HeapPtrна цю ж величину вгору.
Якщо вказівник посилається на тип даних, для якого потрібно пам’яті більше, аніж доступно для розподілу в Heap-області, то в цьому випадку відбувається помилка виконання програми.
Процедура New може бути використана в якості функції, що повертає вказівник конкретного типу даних. Наприклад, якщо змінна P1 має тип даних, визначений як ^Integer, а змінна P1Int – тип даних Р1, то наступні два оператори
New(P1Int);
P1Int:=New(P1);
еквівалентні.
Після того, як вказівник здобув якесь значення, тобто став вазувати на конкретний фізичний байт пам’яті, то за цією адресою можна розмістити будь-яке значення відповідного типу даних
VAR
P1,P2:^Integer;
….
Begin
New(P1);
New(P2);
P1^:=7;
P1^:=7*4;
…
End.
Дата добавления: 2015-08-26; просмотров: 559;