AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Heap

Ein Thema von Pseudemys Nelsoni · begonnen am 13. Feb 2004 · letzter Beitrag vom 14. Okt 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Heap

  Alt 13. Feb 2004, 05:30
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?
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Heap

  Alt 13. Feb 2004, 05:55
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Heap

  Alt 13. Feb 2004, 06:28
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.
Mario
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Heap

  Alt 14. Okt 2004, 11:04
hallo,

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

mfg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 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