Ich hab hier so mein Problem mit dieser Aufgabenstellung:
Ich versteh jetzt einfach nicht, wie ich mir nen 20MB Speicherblock holen soll.
Die Verwaltung ist dann kein Problem. Aber wie bekomme ich den 20MB Block den ich verwalten soll???
Ich will keine Lösung, nur ne Idee wie ich an den Speicherblock komme.
Hab mir das so vorgestellt:
s. Bild
In den Verwaltunsinfos dann halt immer nen Zeiger auf die nächsten Verwaltungsinfos.
In den Vinfos dann
- belegt/frei
- Größe des Blocks
Listen arbeiten optimal mit Datenelementen unterschiedlicher Größe. Die Speicherverwaltung des C++ Heaps ist als Liste implementiert.
Implementieren Sie eine eigene Speicherverwaltung die einen zusammenhängenden Speicherblock eigenständig verwaltet. Ein Speicherblock von 20MB soll durch ein eigenes Heap Management aufgeteilt werden. Funktionen zum Belegen und freigeben von Speicher sind zu realisieren. Die Funktionalität soll durch eine Testroutine geprüft werden können, die die vorhandene Liste durchläuft und die Verwaltungsdaten der Blöcke ausgibt. Dabei sollen Fehler ausfindig gemacht werden können.
Die Speicherverwaltung ist durch eine Testroutine zu prüfen welche Speicher belegt und dessen Inhalt vollständig mit aufsteigenden ganzen Zahlen beschreibt. Dazu sind im Wechsel sind Blöcke zu belegen und freizugeben.
Jede Belegung im Testprogramm führt die Testroutine aus und deren Verwaltungsdaten sind auf der Konsole auszugeben. Die Verwaltungsdaten umfassen mindestens Blockgröße und die Belegt Information.
Testen Sie die Fragmentierung des Heaps, in dem Sie jeden zweiten Speicherblock freigeben und danach einen doppelt großen neuen Block belegen.
Ich versteh jetzt einfach nicht, wie ich mir nen 20MB Speicherblock holen soll.
Die Verwaltung ist dann kein Problem. Aber wie bekomme ich den 20MB Block den ich verwalten soll???
Ich will keine Lösung, nur ne Idee wie ich an den Speicherblock komme.
Hab mir das so vorgestellt:
s. Bild
In den Verwaltunsinfos dann halt immer nen Zeiger auf die nächsten Verwaltungsinfos.
In den Vinfos dann
- belegt/frei
- Größe des Blocks