AGB  ·  Datenschutz  ·  Impressum  







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

Heap und Stack - Unterschiede

Ein Thema von -187- · begonnen am 23. Aug 2011 · letzter Beitrag vom 27. Mai 2014
Antwort Antwort
jdelphi

Registriert seit: 24. Dez 2005
6 Beiträge
 
#1

AW: Heap und Stack - Unterschiede

  Alt 26. Mai 2014, 15:19
Sodele ich betätige mich mal als Leichenschänder.

Seit ihr euch sicher das Lokale Variablen im Stack landen?

Wenn ich eine Lokale Variable ändern will, muss ja dann der ganz stack bis zur Variable hinauf geppopt werden, die Variable geändert und anschließend schön brav wieder alles zurück pushen. Vor allem woher weiß die CPU den noch an welcher stelle im Stack die Variable beerdigt liegt.

Vielleicht ist aber mit lokaler Variable was anderes gemeint, als ich meine.

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
 lokale  : integer;
 variable : String;
begin

end;

PS: Warum wird eigentlich String Fett abgebildet und Integer als Normalschrift?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#2

AW: Heap und Stack - Unterschiede

  Alt 26. Mai 2014, 15:28
Ja, sind wir.

Die lokalen Variablen, Rücksprungungadressen usw. werden auf den Stack gepusht und beim Verlassen der Prozeduren wieder gepoppt.

Aber der Zugriff auf die darauf befindlichen Inhalte geht direkt, über die relative Adresse zum aktuellen Stackpointer.


Im Prinzip hat dieser Stack meistens eine feste Größe (MinStackSize bis MaxStackSize) und es gibt nur einen/zwei Stack-Pointer (ESP und EBP), für die aktuelle Position im Speicher ... an der Stelle werden neue Werte draufgepusht und dabei der Pointer verschoben.


[add]
String ist ein "Reservierter Bezeichner"
www.bergt.de/workshop/delphi/html/delphi33.htm http://delphi.programmieren.vias.org...ved_words.html
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Mai 2014 um 15:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Heap und Stack - Unterschiede

  Alt 26. Mai 2014, 15:29
Der Stack passt doch perfekt. Beim Aufruf werden die Parameter und dann die lokalen Variablen auf den Stack gelegt
Code:
variable : string
lokale : integer
Sender : TObject
Rücksprung-Adresse
...
Innerhalb der Prozedur weiß der Rechner, dass sich lokale an der Stelle Stack-1 und variable an Stack-0 befindet.

Wird diese Prozedur jetzt erneut aufgerufen, dann
Code:
variable : string
lokale : integer
Sender : TObject
Rücksprung-Adresse
variable : string
lokale : integer
Sender : TObject
Rücksprung-Adresse
...
passt das doch wie die Faust aufs Auge
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
jdelphi

Registriert seit: 24. Dez 2005
6 Beiträge
 
#4

AW: Heap und Stack - Unterschiede

  Alt 26. Mai 2014, 15:45
Ok stimmt, man kann den Stack ja auch per Pointer und MOV.. beschreiben und lesen.
Hierdurch wird der Stackpointer nicht Inc/Dec.

Push und Pop hilft verändert ja bequemer weiße den SP mit.

Ok ich glaub ich habs jetzt auch *g*

PPS: Und warum ist Integer kein Reserviertes Wort.
Das interessiert mich schon seit Jahren.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Heap und Stack - Unterschiede

  Alt 26. Mai 2014, 15:53
Das wiederum wäre ein neues Thema!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.049 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Heap und Stack - Unterschiede

  Alt 26. Mai 2014, 16:13
PPS: Und warum ist Integer kein Reserviertes Wort.
Die Frage ist wohl eher: warum ist string eins!?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Heap und Stack - Unterschiede

  Alt 26. Mai 2014, 20:45
Die Frage ist wohl eher: warum ist string eins!?
Weil es nicht zwei sein kann. Ist doch logisch.

String ist ein Systemtyp, Integer nicht, sondern nur eine Ausprägung des Ordinaltyps.
Oder: "string" ist ein reserviertes Schlüsselwort, "Integer" nur ein vordefinierter Datentyp.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#8

AW: Heap und Stack - Unterschiede

  Alt 27. Mai 2014, 07:42
[edit] wo?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Mai 2014 um 07:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Heap und Stack - Unterschiede

  Alt 27. Mai 2014, 07:47
@himitsu

Falscher Thread, Guten Morgen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 05:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz