Thread Externe Funktionen einbinden
(6 answers)
Opened by trojax at 2009-05-25 10:45
Perl 5 verwaltet Speicher, den es für Datenstrukturen alloziert, mit Hilfe von Referenzzählern. Für Dich als Programmierer bedeutet das, dass Du Dir in der Regel überhaupt keine Gedanken machen musst, ob irgendein Speicherzugriff noch erlaubt ist -- solange Du eine Referenz oder Variable kennst, über die Du direkt oder indirekt an ein Objekt kommen kannst, solange ist auch der Zugriff erlaubt.
Etwas präziser funktioniert dieses Speichermanagement so: Jedes Objekt wird mit einem Referenzzähler von eins erstellt. Es wird dealloziert sobald sein Referenzzähler auf Null fällt. Immer wenn Du eine Referenz auf ein Objekt erzeugst -- explizit mit dem \-Operator oder auch implizit durch Verwendung als Rückgabewert, Closures, Aliase oder ähnliches -- wird der Zähler um eins erhöht. Immer wenn eine Referenz auf das Objekt ungültig wird -- explizit indem eine Variable, die eine Referenz enthielt, auf einen anderen Wert gesetzt wird oder implizit, weil ein Rückgabewert vom internen Stack gelöscht wird, der Gültigkeitsbereich einer Variable oder eines Aliases verlassen wird oder weil andere Objekte, die noch eine Referenz enthalten, selbst zerstört werden -- wird der Zähler um eins verringert. Dieses automatische Speichermanagement ist bequem für den Programmierer und effizient. Es hat allerdings den Nachteil, dass es möglich ist, zirkuläre Referenzketten aufzubauen, was dazu führt, dass die an der Kette beteiligten Objekte niemals freigegeben werden. Um das zu vermeiden bräuchte man einen "echten" Garbagecollector. When C++ is your hammer, every problem looks like your thumb.
|