Und da ich das ohnehin nie verstanden habe, kommt meine Frage: In der Aufgabe wird anscheinend Heap und Datensegment synonym verwendet. Ich dachte, das sind zwei verschiedene Sachen.Sie könnten etwa einen großen, kontinuierlichen Speicherbereich auf dem Heap mithilfe des MARS-Kommandos .space reservieren und diesen der Reihe nach mit Daten füllen.
Ich benutze ja .space um eine fixe Anzahl an Speicher zu reservieren und das unter .data, also im Datensegment. Das ist nach meiner Interpretation der "Read/write data"-Bereich in der Illustration auf der Folie Kap. 2/25. Diese liegt unter dem Heap und über dem Code. Ich dachte, der Heap wäre doch drüber, und wird dynamisch mit dem Syscall sbrk allokiert? So zeigt mir MARS, dass das Datensegment bei 0x10010000 anfängt und der Heap bei 0x10040000, also zwei verschiedene Bereiche sind.
Den Heap zu verwenden hätte in der Aufgabe dann den Vorteil, dass man nicht einen großen Bereich im Datensegment reservieren muss, den man oft gar nicht verwendet.
Bezeichnet Heap also die Daten unter .data oder nicht? Oder habe ich alles völlig falsch verstanden?
Falls meine Interpretation stimmt: Gibt es für die Aufgabe einen Nachteil den Heap zu verwenden bzw. muss man was beachten? Wie kann man Speicher im Heap wieder freigeben, wie man das auch C/C++ kennt (free/delete)?