Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

Re: Speicheranspruch Leerstring in Konstante

  Alt 28. Dez 2007, 14: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.
$2B or not $2B
  Mit Zitat antworten Zitat