Справочник по Ada (Ada 2022)
13.11.5 Освобождение подпула
Подпул может быть явно освобожден с помощью Unchecked_Deallocate_Subpool.
Статическая семантика
Существует следующая определенная языком библиотечная процедура:
с System.Storage_Pools.Subpools;
процедура Ada.Unchecked_Deallocate_Subpool
(Subpool : вход-выход System.Storage_Pools.Subpools.Subpool_Handle)
с Global => вход-выход все;
процедура Ada.Unchecked_Deallocate_Subpool
(Subpool : вход-выход System.Storage_Pools.Subpools.Subpool_Handle)
с Global => вход-выход все;
Если Subpool равен null, вызов Unchecked_Deallocate_Subpool не оказывает никакого влияния. В противном случае подпул завершается, а Subpool устанавливается в null.
Завершение работы подпула имеет следующие эффекты в указанном порядке:
Этот абзац был удален.
1.
Любые объекты, выделенные из подпула, которые до сих пор существуют, завершаются в произвольном порядке;
2.
Все объекты, выделенные из подпула, перестают существовать;
3.
Затем выполняется следующий вызов диспетчеризации:
Deallocate_Subpool(Pool_of_Subpool(Subpool).все, Subpool);
4.
Подпул перестает принадлежать к любому пулу.
Завершение объекта Root_Storage_Pool_With_Subpools завершает все подпулы, принадлежащие этому пулу и еще не завершенные.