Dynamische Speicherverwaltung

In modernen Sprachen, wie Python und C++/JAVA, kann ein Programm jederzeit eine im Prinzip beliebig grosse Menge Speicher für Objekte oder Arrays anfordern, mittels z.B.
a = [some-object]*length

Eine besonders schönes Feature von Python (und JAVA) ist, daß das schon alles ist; das aufräumen passiert automatisch.

In C/C++ dagegen muss sich die Programmiererin selbst darum kümmern den allozierten Speicher wieder zu räumen, eine sehr heikle und fehleranfällige Aufgabe.



   for ( i = 0; i < 1000000; i++ ) { // C++ killer, fine in JAVA
        double [] space = new double[1000000];
        ...
        // delete [] space;  // C++ memory leak
    }
    ...
    // oder
    int [] room = new int[100];
    int [] room2 = room;
    ...
    delete [] room;  // C++ room2 still defined, dangling ref
}


Python merkt sich alle Referenzen auf die angelegten Objekte bzw. den allozierten Speicherbereich. Sobald keine mehr vorhanden sind wird der Bereich zum Abschuss für den garbage-collector freigegeben. Dieser wird bei Bedarf automatisch gerufen. In der Regel kein Eingriff des Programmierers nötig.