Einzelnen Beitrag anzeigen

Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Heap und Stack - Unterschiede

  Alt 23. Aug 2011, 22:42
Den Stack als Datenstruktur kannst du dir wie einen Stapel vorstellen.
Wenn du oben was draufgepackt hast (push) kannst du auch nur das oberste Element wieder runternehmen (pop) oder es dir anschauen (peek).

Der Stack als Speicherbereich ist in etwa so aufgebaut wie die gerade erwähnte Datenstruktur:
Mit den Assemblerbefehlen push und pop können Bytes draufgeschoben werden.
Entgegen der bildlichen Vorstellung eines Stapels wächst er jedoch nach unten.
Auf den Stack kommt alles, was verschachtelt wird:

> Funktion A wird aufgerufen mit Argument B
>> Return-Pointer kommt auf den Stapel
>> B kommt auf den Stapel
>> A macht was mit B
>> Funktion A wird rekursiv aufgerufen mit Argument C
>>> Return-Pointer kommt auf den Stapel
>>> C kommt auf den Stapel
>>> A macht was mit C
>>> Stapel wird bereinigt
>>> Return-Pointer wird gepopt
>> Stapel wird gereinigt
>> Return-Pointer wird gepopt
> und wir sind wieder im Hauptprogramm

Verstanden?
  Mit Zitat antworten Zitat