2012-04-14 17 views
4

Alle Fragen, die ich auf dieser Seite finden, beziehen sich nur auf Stack vs Heap und nicht diskutieren Frame so hier ist meine Frage. Erhalte nicht den Unterschied zwischen allen dreien.Stack - Frame - Heap in Objective-C

Was ich weiß:

Frame: A frame ist wie eine Tafel zum Beispiel Variablen einer Funktion. Während die Funktion ausgeführt wird, werden alle Instanzvariablen innerhalb der frame dieser Funktion gespeichert. Wenn eine Funktion aufgerufen wird, wird frame über die stack erstellt.

Stack: A stack kann als physikalische stack von frames visualisiert werden. Wenn eine Methode (oder Funktion) ausgeführt wird, weist sie einen Speicherabschnitt von stack zu.

Heap: Alle Objektzeiger leben auf der heap.

Stack und Frame ist klar (ich denke), aber bin ich richtig mit meiner Heap Aussage?

Antwort

2

Heap: Alle Objektzeiger befinden sich auf dem Heap.

Stack und Frame ist klar (denke ich) aber bin ich richtig mit meiner Heap-Anweisung?

Nicht ganz. Die meisten (*) dynamisch Objekte leben auf dem Haufen, die Zeiger zu diesen Objekten leben in anderen Objekten (oder Variablen, sie sind im Wesentlichen die gleiche Sache) - die auf dem Stapel oder Heap sein kann. Diese Unterscheidung zwischen "Objekten" und "Zeigern auf Objekte" ist in Objective-C wichtig (nicht in allen Sprachen), und es ist nicht korrekt zu sagen, dass alle "Objektzeiger auf dem Heap leben".

(*) "Most", wie es möglich und manchmal sehr nützlich ist, dynamische Objekte auf dem Stapel zuzuweisen. Das können Sie nicht mit Objective-C-Objekten tun, aber Sie können dies mit C-Objekten tun (und C ist Teil von Objective-C). Machen Sie sich noch keine Gedanken darüber, diese Fußnote dient eher dazu, zu verdeutlichen, dass das hier beschriebene Modell eine Vereinfachung ist.

0

Ja. Heap ist ein nicht kontinuierlicher Speicherplatz für dynamisches Gedächtnis.

0

Aufbauend auf die Antwort von @ CRD ...

Ein anderer Weg, über den Haufen zu denken ist, wie der Name schon sagt - einen unordentlichen Haufen. Wir brauchen die Hinweise, um den Weg zurück zu den Objekten zu finden, die auf den Haufen geworfen wurden.

+0

Vielen Dank für Ihren Beitrag. –

+0

Ich bin froh, Ihnen helfen zu können! – geekyhybrid

Verwandte Themen