Freigabe von Datenflächen

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

*Im Trivialfall wird nur dynamisch Speicher angelegt, jedoch nie wieder freigegeben (z.B. bei klassischen Pascal-Implementierungen). Dies ist einfach zu realisieren, begrenzt jedoch natürlich die Möglichkeiten, da nicht beliebig viel Speicher zur Verfügung steht, um dies lange genug durchzuhalten.
 
*Bei vielen klassischen Programmiersprachen wie Modula-2 und C erfolgt die Freigabe explizit, z.B. in Modula-2 über DISPOSE. Nachteile:

*Die Freigabe kann vergessen werden (Speicherlecks),
 
*es ist nicht immer trivial zu ermitteln, wann etwas freigegeben werden sollte, und
 
*Zeiger werden noch weiterverwendet, obwohl die Datenfläche dahinter bereits freigegeben worden ist (dangling reference).
 
Insbesondere letzteres führt zu extrem schwer aufzudeckenden Problemen.
 

*In Oberon (und anderen modernen Programmiersprachen) erfolgt die Freigabe vollautomatisch. Alle Datenflächen, auf die nicht mehr zugegriffen werden kann, werden bei Bedarf wiederverwendet (garbage collection).
 
*Beim Ulmer Oberon-System wird ein {\it copying garbage collector} verwendet, der Fragmentierung ausschließt.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999