まず、この言語にはガベージ コレクションを禁止するものは何もありません。
次に、一部の実装ではガベージ コレクションが実行されます。特に、JVM ガベージ コレクトを対象とするすべての実装。
第 3 に、すべてのコンパイラである程度のガベージ コレクションを取得する方法があります。アクセスタイプが範囲外になったときに、そのオブジェクトの格納用に一定量のスペースを確保するように言語に具体的に指示した場合、そのスペースはその時点で破棄されます。私は過去にこれを使用して、ガベージコレクションを少し取得しました。使用する宣言 voodo は次のとおりです。
type Foo is access Blah;
for Foo'storage_size use 100_000_000; --// 100K
これを行うと、Foo ポインターが指す Blah オブジェクトに割り当てられたすべて (100K) のメモリは、Foo 型がスコープ外になるとクリーンアップされます。Ada ではサブルーチンを他のサブルーチン内にネストできるため、これは特に強力です。
storage_size とストレージ プールでできることの詳細については、LRM 13.11を参照してください。
第 4 に、適切に作成された Ada プログラムは、C プログラムほど動的メモリ割り当てに依存する傾向がありません。Cには、実践者がポインターを使用してペイントすることを学んだ多くの設計上の穴がありました. これらのイディオムの多くは、Ada では必要ありません。