Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Heap (https://www.delphipraxis.net/16224-heap.html)

Pseudemys Nelsoni 13. Feb 2004 04:30


Heap
 
hoi,

was ist eigentlich der heap? in meinem buch steht das es der speicher ist den mein programm zur verfügung hat, aber wieviel ist das und wo wird das bestimmt?

Luckie 13. Feb 2004 04:55

Re: Heap
 
Es gibt zwei große Speicherbereiche, den Heap und den Stack. Auf dem Stack werden Rücksprungadressen, Parameter und lokale Variablen abgelegt. Auf dem Heap die globalen, Arrays, Objekte (bei Konstanten bin ich mir nicht sicher) etc.

Der Stack arbeitet nach dem FiLo Prinzip: First in, last out. Also wie ein Stapel. Bekanntestes Beispiel ist wohl ein Tellerstapel, den Teller den ich als erstes hinstelle, kann ich nur als letztes wegnehmen, wenn ich alle anderen erst wieder runtergenommen habe. Das Betriebssystem reserviert pro Thread, wenn nicht anders angegeben 1 MB (oder waren es zwei?).

Auf den Heap kann ich "wahlfrei" über die Adresse zu greifen. Wie groß der nun ist, kann ich allerdings nicht sagen. Er wird wahrscheinlich dynamisch angepasst werden, je nach dem wie viel Speicher deine Anwendung braucht, kann also wachsen. Sprich, dine anwendung vordert ihn von windows an und windows gibt dir einen gültigen Adressbereich zurück. Im Gegensatz zum Stack, kann der Heap auch fragemntiert sein, was sich aus dem Prinzip ergibt, wie er verwaltet wird. Wobei der Heap von dem einem Ende des Adressbereiches wächst und der Stack von dem anderen. Insgesamt steht deiner Anwendung unter 32-Bit Windows ein 4 GB großer Adressraum zur Verfügung. Da man mit 32 Bit $00000000 bis $FFFFFFFF speicheradressen ansprechen kann. Wobei effektiv nutzen kann er da von nur 2 GB, der Rest wird für Systemcode benötigt, der in den Adressraum deiner Anwendung gemappt wird.

So, das ist alles, was ich über den Heap und den Stack weiß. Ich hoffe, ich habe nicht zu viel Mist erzählt. Man möge mich verbessern und ergänzen, falls dem so sein sollte. ;)

Pseudemys Nelsoni 13. Feb 2004 05:28

Re: Heap
 
Danke, gut zu wissen. :)
Ich dachte man muss irgendwo im Programm bestimmen wie gross der Heap wird.
Das mit den Tellern ist n gutes Beispiel hehe.

freak4fun 14. Okt 2004 10:04

Re: Heap
 
hallo,

danke luckie. hab zwar kaum was verstanden, aber was ich brauche hab ich nun. :oops:

mfg
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz