LIFO-Stapelspeicher Überlauf sauber programmieren

Herakles

Profifragensteller
Moin!

Ich habe einen LIFO-Speicher, der als statischer Array mit 500 Elementen in einem C-Programm realisiert ist.

Nun möchte ich im Falle des Überlaufs des LIFO(also wenn ein neues Element hinzugefügt werden soll, der Stapelspeicher aber voll ist) das älteste Element löschen und dafür das neuste hinzufügen.

Meiner Logik zufolge ist so ein LIFO aber nur dafür gedacht, das oberste Element des Stapelspeichers abzuarbeiten - eben "Last in, First out".

Ich könnten nun auch hergehen und die Inhalte aller Elemente des Arrays in das jeweils nächste kopieren, damit letztendlich ein Element frei wird, aber das wäre schon sehr viele Kopieroperation und das möchte ich dem Rechner eigentlich ersparen(ich arbeite auf einer sehr kleinen, "schwachbrüstigen" Hardware).

Ein "free()" und dann "malloc()" verbietet sich aufgrund des statischen Arrays...

Habe ich nur einen Knoten im Kopf oder gibt es hier wirklich ein Problem?

Habt Dank für jeden Tipp!

Herakles
 
Koenntest du das nicht so aehnlich wie bei einem Ringpuffer machen, du merkst dir quasi den Index wo das unterste Element anfaengt und wo das oberste liegt? Wenn dein Speicher dann voll ist, inkrementierst du dann quasi den Index fuers unterste Element. Die Indizes kannst du dann zB %500 rechnen damit diese immer im Intervall [0;499] liegen.
 
Hi ist es möglich das du eine linked list im statischen Array abbildest die nicht mit Zeigern sondern mit Indiezen arbeitet? Dann kann du die Elemente nach belieben umhängen wie mit einer normalen linked list im Speicher.

Gruß Daniel_s
 
Zurück
Oben