AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memoryleak bei dynamischen Forms ?

Ein Thema von Ghostwalker · begonnen am 28. Jun 2007 · letzter Beitrag vom 28. Jun 2007
 
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#1

Memoryleak bei dynamischen Forms ?

  Alt 28. Jun 2007, 06:47
Ich hab hier ein kleines Testprogramm geschrieben, das, neben dem Hauptformular, mehrere Unterformulare hat (mit je einem Riesenbild zur Verdeutlichung ).

Diese Unterformulare werden im Hauptform per Listbox ausgewählt und per Buttonclick dynamisch erzeugt:

Delphi-Quellcode:
  procedure THauptformular.Showform(Item:integer);
  begin
    case item of
       0 : begin
             form1 := TForm1.Create(self);
             form1.onclose := DoCloseSubForm;
             form1.Tag := item;
             form1.Show;
           end;
       1 : begin
             form2 := TForm2.Create(self);
             form2.OnClose := DoCloseSubForm;
             form2.Tag := item;
             form2.Show;
           end;
       2 : begin
             form3 := TForm3.Create(self);
             form3.onclose := DoCloseSubForm;
             form3.Tag := item;
             form3.Show;
           end;
       3 : begin
             form4 := TForm4.Create(self);
             form4.onclose := DoCloseSubForm;
             form4.Tag := item;
             form4.Show;
           end;
       4 : begin
             form5 := TForm5.Create(self);
             form5.onclose := DoCloseSubForm;
             form5.Tag := item;
             form5.Show;
           end;
       5 : begin
             form6 := TForm6.Create(self);
             form6.onclose := DoCloseSubForm;
             form6.Tag := item;
             form6.Show;
           end;
       6 : begin
             form7 := TForm7.Create(self);
             form7.onclose := DoCloseSubForm;
             form7.Tag := item;
             form7.Show;
           end;
    end;
  end;
Soweit funktioniert das ganze auch wunderbar.

Beim Schließen des Unterformulars wird die Instanz nun wieder freigegeben:

Delphi-Quellcode:
procedure THauptformular.DoCloseSubForm(Sender: TObject;
  var Action: TCloseaction);
begin
  action := caFree;
end;
Das scheint aber nur teilweise zu funktionieren. Lt. Taskmanager bleiben etwa 650Kb stehen und zwar jedesmal, also wenn ich die Unterformulare 5 mal aufrufe, bleiben insgesamt 3250 Kb stehen !!. Wie kommt das und wie kann man das verhindern ?
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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 by Thomas Breitkreuz