Autor Beitrag
mcbain
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60
Erhaltene Danke: 1



BeitragVerfasst: Mo 20.02.12 10:50 
Hallo,
ich habe eine Frage zur Speicherverwaltung.
Wenn ich eine Liste voller Objekte erstelle, muss ich dann den Speicher jedes Objektes darin händisch wieder freigeben oder reicht es einfach die Liste wieder freizugeben?
Hier mal ein Beispiel:

.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
..
var liste: TList;
    myObject: TObject;
    i:integer;
begin
   liste := TList.Create;
   try 
     for i := 0 to 10 do
     begin
        myObject := TObject.Create;
        liste.Add(myObject);

     end;

   finally
     liste.Free;
   end
end;


Entsteht hierdurch eine Speicherlücke?
Ich komme aus der Java-Ecke und da stellt sich diese Frage ja nicht, also bitte nicht wundern.

Wäre nett, wenn mir jemand diese Frage beantworten könnte, bin mir nämlich gerade nicht mehr so sicher.
Vielen Dank.
Gruß
mc
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mo 20.02.12 11:06 
Jepp, das ist ein Speicherleck.
Du kannst aber eine TObjectList statt der TList verwenden. Die hat die Eigenschaft "OwnsObjects". Wenn du die auf True setzt, werden die Objekte beim Freigeben der Liste mit freigegeben.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: mcbain
mcbain Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60
Erhaltene Danke: 1



BeitragVerfasst: Mo 20.02.12 11:21 
Gesagt, getan. Habe es auf die ObjectList umgestellt.
Vielen Dank für die schnelle Antwort.

Gruß
mc