![]() |
Speicherbedarf von TStringList
Weiß einer von euch, wie ich den gesamten Speicherbedarf einer gefüllten TStringList bekomme?
mit:
Delphi-Quellcode:
???
speicher := Length(StringList1.Text)+SizeOf(TStringList)
Oder anders? |
Re: Speicherbedarf von TStringList
Das wird schwierig. Ein Objekt vom Typ TStringList belegt zunächst einmal TStringList.InstanceSize Bytes an Speicher, dieser Wert ist konstant. Dabei sind Zeiger auf die Objekt- und Stringlisten, die wiederum Speicher einnehmen. Die Elemente in der Objektliste können wiederum Zeiger auf andere Speicherbereiche haben usw...
Für den allgmeinen Fall lässt sich diese Frage also nicht genau beantworten. |
Re: Speicherbedarf von TStringList
das ist doof. :(
Ich habe nämlich folgenden Code:
Delphi-Quellcode:
und würde gerne wissen, wieviel Speicher das ganze verbraucht um evtl. eine Optimierung vornehmen zu können...
var
stlarr : array of TStringList; <edit> in der StringList werden immer nur Strings vom Typ String[12] gespeichert... </edit> |
Re: Speicherbedarf von TStringList
dann nimm doch ein Array of Array of String[12], das ist vermutlich
4 Byte (für den Zeiger auf das Array) + 4 Byte für die Arraylänge + 13 Byte für jeden der Strings (12 Zeichen + 1 Längenbyte, da Shortstring) das würde dann wohl so berechnet?
Delphi-Quellcode:
Groesse := 8;
for i := Low(ARRAY) to High(ARRAY) do Inc(Groesse, 8 + 13 * Length(ARRAY[i])); |
Re: Speicherbedarf von TStringList
Zitat:
Wobei aber der von TStringList reservierte Speicher nicht eingerechnet ist, da dein Array bis jetzt nur "NIL" enthält. Zitat:
Um den benötigten Speicher zu ermitteln könnte man so vorgehen:
Delphi-Quellcode:
Das muss aber nicht vollständig sein.
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])); |
Re: Speicherbedarf von TStringList
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 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