Moin!
Zitat von
trifid:
@Dax
nach Deiner Aussage
Delphi-Quellcode:
n1 := strListe.InstanceSize;
strListe.Add('Heute');
strListe.Add('ist');
strListe.Add('ein');
strListe.Add('schöner');
strListe.Add('Tag');
n2 := strListe.InstanceSize;
müsste n1 <> n2 sein, n1 = n2 = 48
[/quote]
Er gibt auch nur den Platz zurück, den die Instanz braucht für ihre Membervariablen und nix weiter. Selbst die Strings bei dem Beispiel TStringList wird intern in der Klasse nur mit 4 Byte angerechnet, da es ein Pointer ist. Und somit müsstest du theoretisch die Vererbungskette von dem Objekt rückwärts durchlaufen und bei jeder Klasse das InstanceSize aufsummieren - was dann immernoch nicht Daten wie z.B. Strings mit beinhaltet.
Zitat von
trifid:
@jbg
Zitat:
Für was brauchst du denn diese Information?
ich habe das Problem in einer selbstgeschriebenen Klasse, dass diese Speicher alloziert und nicht mehr freigeben kann
Ich glaube dieser Ansatz hier hilft dir nicht bei der Lösung des Problems. In wie fern äussert sich denn der Fehler, das du kein Speicher mehr freigeben kannst? Wie kommst du darauf? Nur weil der Taskmanager nicht wieder einen kleineren Wert anzeigt nach einem .Free? Wenn es das letztere ist: sei unbesorgt: Der Delphi Heap Manager verkleinert nicht freiwillig seinen Bereich - wenn der einmal so gross ist, dann bleibt er es bis zum Ende ...
MfG
Muetze1