Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Speicherproblem mit Dispose

  Alt 3. Mai 2007, 10:43
Hallo,
Zitat von akrichel:
(Tip: wenn man in einer Stringliste nicht clear aufruft sondern die Elemente deleted, dann wird der Speicher auch freigegeben. Delete vom letzten Element an bietet sich aus Geschwindigkeitsgründen an).
Das ist so nicht ganz richtig. Die Methode TStringList.Clear sieht folgendermaßen aus:
Delphi-Quellcode:
  if FCount <> 0 then
  begin
    Changing;
    Finalize(FList^[0], FCount);
    FCount := 0;
    SetCapacity(0);
    Changed;
  end;
Es werden also sowohl die Strings als auch die Liste freigegeben. Das Problem ist eher, dass TMemo.Lines keine TStringList ist, sondern eine eigene Implementierung der abstrakten Klasse TStrings. TMemo ist nämlich nur ein Wrapper um ein Windows-Control, welches den Speicher für seinen Inhalt selbst verwaltet.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat