Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Speicheranspruch Leerstring in Konstante

  Alt 28. Dez 2007, 13:21
also eine richtige Konstante liegt nicht im RAM.

Stringkonstanten (AnsiString) werden vom Kompiler mitten im Programmcode (z.B. der Exe) abgelegt.
Auch das Array (wenn es als Konstante definiert ist) sollte da rumschwirren.

am Ende wird maximal der Pointer auf das Array im RAM liegen (muß aber nicht ... hal jenachdem wie das Array im Programm angesprochen wird.


Und selbst wenn das Array im RAM landet, dann sind da wiederum nur die Pointer zu den Strings/AnsiStrings enthalten, also das wären dann 4 Byte * StringAnzahl + 12 Byte zur Arraydefinition.

Ein Leerstring hat keine Daten und der Zeiger zu diesen steht auf NIL ... also ein Leerstring verbraucht immer nur maximal 4 Byte


Delphi-Referenz durchsuchenShortStrings liegen als Konstanten komplett im Programmcode versteckt und verbrauchen garkeinen RAM.


Unter Win32 und mit Delphi.
Achtung: typisierten Konstanten (dürfte Strings/Arrays aber im Normalfall nicht betreffen) werden von Delphi oftmals als konstante Variablen angelegt, würden also etwas peicher verbrauchen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat