Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Größe einer Klasseninstanz bestimmen (https://www.delphipraxis.net/71522-groesse-einer-klasseninstanz-bestimmen.html)

3_of_8 16. Jun 2006 10:13


Größe einer Klasseninstanz bestimmen
 
Morgen.

Wie kann ich die Größe einer Klasseninstanz bestimmen, also den Speicherverbrauch auf dem Heap?
sizeof(TObject) funktioniert nicht, da bekomme ich die Größe des Instanzenpointers.

Elvis 16. Jun 2006 10:15

Re: Größe einer Klasseninstanz bestimmen
 
InstanceSize? :gruebel:

Udontknow 16. Jun 2006 10:34

Re: Größe einer Klasseninstanz bestimmen
 
Die Frage ist, ob das einen weiterbringt, denn hinter jedem Pointer im Objekt verbirgt sich ja in der Regel wiederum ein Speicherbereich (also bspw. Strings oder aggregierte Objekte ), der evtl. dazugezählt werden soll.

Willst in etwa die reale Datengröße bestimmen, solltest du Routinen wie LoadFromStream und SaveToStream implementieren, die alle Daten schreiben bzw. lesen, dann einfach die Daten in einen Memorystream schieben und die Size des Streams abfragen. Das ist natürlich je nach Komplexität der Daten aufwendig, aber anders geht´s imho nicht.

Cu,
Udontknow

Elvis 16. Jun 2006 10:46

Re: Größe einer Klasseninstanz bestimmen
 
Zitat:

Zitat von Udontknow
Die Frage ist, ob das einen weiterbringt, denn hinter jedem Pointer im Objekt verbirgt sich ja in der Regel wiederum ein Speicherbereich (also bspw. Strings oder aggregierte Objekte ), der evtl. dazugezählt werden soll.

Es gibt dir halt die Größe des internen Records. Was man damit anstellt bleibt erstmal offen.

Udontknow 16. Jun 2006 11:18

Re: Größe einer Klasseninstanz bestimmen
 
Natürlich. Ich habe es ja auch nur "ergänzenderweise" noch dazugeschrieben. :)

Cu,
Udontknow

3_of_8 16. Jun 2006 13:07

Re: Größe einer Klasseninstanz bestimmen
 
Ahja, hätte ich eigentlich auch selber drauf kommen können. Hat mich nur mal interessiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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