Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Heap und Stack - Unterschiede

  Alt 24. Aug 2011, 06:56
Auf den Stack kommen vorallem lokale Variablen, Rücksprungadressen der Prozeduraufrufe und Stackframes.

Dynamische Arrays, "lange" Strings (also alles außer Delphi-Referenz durchsuchenShortStrings und statischen Char-Arrays), Objekte und Interfces sind intern Zeiger, also liegen dann maximal ihre Zeiger auf'm Stack und der Rest im Heap, da dessen Speicher intern z.B. über GetMem angefordert wird.

Globale Variablen und typisierte Konstanten liegen in der DataSektion der EXE/DLL.
"Echte" Konstanten landen meißt in der CodeSektion, bzw. werden ja direkt in den Nutzungsstellen wertmäßig eingebaut.
Felder/Membervariablen von Objekten, da dieses ja in dem Objekt liegen, landen somit auch auf dem Heap landen.


Deshalb bekommt man gerne mal Probleme (Stacküberlauf) bei:
- zirkulären Prozeduraufrufen / Endlosschleifen
- zu großen statischen Arrays
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Aug 2011 um 09:25 Uhr)
  Mit Zitat antworten Zitat