Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: Speicherbedarf von TStringList

  Alt 18. Feb 2005, 11:43
Zitat von DevilsCamp:
und würde gerne wissen, wieviel Speicher das ganze verbraucht um evtl. eine Optimierung vornehmen zu können...
Length(stlarr) * SizeOf(Pointer) + 8

Wobei aber der von TStringList reservierte Speicher nicht eingerechnet ist, da dein Array bis jetzt nur "NIL" enthält.

Zitat:
in der StringList werden immer nur Strings vom Typ String[12] gespeichert...
Das interessiert die StringList nicht. Die hält ihre Daten in einem AnsiString und der ist dynamisch. AnsiString braucht immer 4 Byte (Zeiger) und dann je nach Inhalt zusätzlich 0 Byte (Leerstring) oder 9 Byte (1 Zeichen) bis 2GB (Userspace-Adressraum-Ende).

Um den benötigten Speicher zu ermitteln könnte man so vorgehen:
Delphi-Quellcode:
Size := List.InstanceSize;
Inc(Size, List.Capacity * 8) // record für jedes Item (Objects[] + Strings[])
for i := 0 to List.Count - 1 do
  if List[i] <> 'then
    Inc(Size, 8 + Length(List[i]));
Das muss aber nicht vollständig sein.
  Mit Zitat antworten Zitat