Справочник по Ada 2012
13.11.5 Освобождение подпула
Подпул может быть явно освобожден с помощью Unchecked_Deallocate_Subpool.
Статическая семантика
Существует следующая определенная языком библиотечная процедура:
with System.Storage_Pools.Subpools;
procedure Ada.Unchecked_Deallocate_Subpool
(Subpool : in out System.Storage_Pools.Subpools.Subpool_Handle);
procedure Ada.Unchecked_Deallocate_Subpool
(Subpool : in out System.Storage_Pools.Subpools.Subpool_Handle);
Если Subpool равно null, вызов Unchecked_Deallocate_Subpool не имеет эффекта. В противном случае подпул завершает свою работу, и Subpool устанавливается в null.
Завершение работы подпула влечёт за собой следующие последствия:
- Подпул больше не принадлежит ни одному пулу;
- Любые объекты, выделенные из подпула и всё ещё существующие, завершают свою работу в произвольном порядке;
- Все объекты, выделенные из подпула, перестают существовать;
- Затем выполняется следующий вызов диспетчеризации:
Deallocate_Subpool(Pool_of_Subpool(Subpool).all, Subpool);
Завершение работы объекта Root_Storage_Pool_With_Subpools завершает работу всех подпулов, принадлежащих этому пулу, которые ещё не завершены.