# Stack und Heap - die Unterschiede!



## chrilux (8. Feb 2014)

Im Ineternet kursieren viele Erklärungen vom Stack und Heap...

Aber alle sind für mich sehr schwierig zu verstehen...

Hat einer von Euch eine signifikat einfache Erkärung für die Unterschiede von Stack und Heap?


----------



## turtle (8. Feb 2014)

Stack ist eine Datenstruktur um Elemente zu speichern und nur in umgekehrter Reihenfolge wieder ausgelesen werden können (LIFO-Prinzp, Last-In-First-Out). Daher heißen die beiden Operationen auf einem Stack meistens Push und Pop.

Ein Heap (Halde) ist ebenfalls eine Datenstruktur um Elemente zu speichern. Hier gibt es aber keine "vorgeschriebene" Zugriffsart. Daher heißen die Funktionen hier meistens insert und remove. Also KANN ein Heap entscheiden, wie die Elemente möglichst effektiv gespeichert werden, häufig in Form von Bäumen.


----------



## chrilux (8. Feb 2014)

Das ist mal eine Aussage.. 

Beides Datenstrukturen also, die sich einfach in der Art und Weise unterscheiden, wie sie wieder ausgegeben werden?

zB. was passiert bei String s1 = "Hallo"; ?

Wäre dann s1 auf dem Stack und "Hallo" im Heap?


----------



## turtle (8. Feb 2014)

> Wäre dann s1 auf dem Stack und "Hallo" im Heap?



Das kommt drauf an, wie du alles definierst.

Beide Objekte sind (üblicherweise) im Heap, es sei denn...

Lokale Variable dagegen, beispielsweise einer Methode, landen auf dem Stack.


----------

