String-Heap

Aus C64-Wiki

Wechseln zu: Navigation, Suche

Der String-Heap (engl. "Heap" = dt. "Haufen") ist der Speicherbereich für dynamische Zeichenketten des BASIC-Interpreters. Er liegt beim C64, wie bei allen 8-Bit Microsoft BASICs, am Ende des Basic-Speichers, die Standardadresse (MEMTOP) ist 40960/$A000.
Die Elemente des Heaps bestehen aus Zeichenketten, die eine Länge von 1 bis 255 Zeichen aufweisen. Diese werden von einem String-Descriptor (z.B. in einer String-Variablen) referenziert, wenn eine Zeichenkette noch in Verwendung ist. Ausgehend von den am Heap befindlichen Zeichenketten lassen sich eventuell dazugehörige String-Descriptoren nicht unmittelbar ermitteln, was eine Reorganisation aufwendig macht. Ab Basic 3.5 wird dieser Nachteil mit einem Rückwärtsverweis bei der Zeichenkette behoben.

Neu angelegte Zeichenketten lassen den Heap "abwärts" wachsen, in Richtung niedrigerer Adressen dem Ende des Speicherbereichs für indizierte Variablen (STREND) entgegen.
Ist der String-Heap ausgeschöpft (bei STREND angelangt), wird mit Hilfe der Garbage Collection versucht, diesen zu kompaktieren, indem nicht mehr verwendete Zeichenketten (also nicht von einem String-Descriptor referenzierte) wieder zu einem freien Bereich zusammen zu fassen.

Persönliche Werkzeuge