Пример 1: использование маркировки для очистки памяти

Var

P1,p2,p3,p:^integer;

.

.

New(p1);

Mark(p);

New(p2);

New(p3);

Release(p);

(этот пример рассмотрен ниже).

Пример 2:

Var

Po,p1,p2,p3:^byte;

Pp:pointer;

.{1}

.

New(p0);

New(p1); {2}

New(p2);

Dispose(p1);

Mark(pp);{3}

Если далее выполнить new(p3) то выделиться блок памяти в области связанной с p1, если же p3:^integer то оператор new(p3) привел бы к тому что блок выделиться с адреса HeapPtr.

Процедура освобождения памяти

Release(<ссылка или указатель>);

Продолжим пример1.

Данная процедура Release переместит указатель HeapPtr по адресу P т.е. все находящиеся выше адреса Р будет считаться свободным.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: