D Garbage Collector

Da Andreabont's Wiki.

Il D dispone di un Garbage Collector nativo sempre disponibile, ma a differenza di molti altri linguaggi non è obbligatorio usarlo. Il D infatti dispone di distruttori per le classi e di una parola chiave per forzare la deallocazione della memoria. Il Garbage Collector rimane comunque pronto ad intervenire dietro necessità (per esempio per deframmentare la ram).

Esempio

import std.stdio;
 
void main() {
 
        class Foo {
                int x;
                this() { x = 1; }
        }
 
        Foo foo = new Foo; // Alloco memoria
 
        writeln(foo.x);
 
        destroy(foo); // Chiedo al GC di deallocare (non immediato)
 
        writeln(foo.x); // Le variabili sono a NULL, ma ancora accessibili.
 
        delete foo; // Dealloco la memoria (immediato)
 
        writeln(foo.x); // Qui va in segmentation fault.
 
}