Autor Beitrag
Nano-Ware
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: Mo 07.12.09 13:09 
Wenn ich eine Varable/Komponente nur für eine Procedure, also z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TMainForm.FormCreate(Sender: TObject);
var
  lista: TListItem;
begin
  ...  
end;

wird diese dann wieder aus dem Arbeitsspeicher entfernt, nachdem die Procedure beendet worden ist?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 07.12.09 13:29 
Moin und :welcome: im Forum!

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich eine Varable/Komponente nur für eine Procedure, also z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TMainForm.FormCreate(Sender: TObject);
var
  lista: TListItem;
begin
  ...  
end;

wird diese dann wieder aus dem Arbeitsspeicher entfernt, nachdem die Procedure beendet worden ist?
Jain. ;)

Lokale Variablen sind nur innerhalb der Prozedur/Funktion/Methode gültig, das ist schon richtig. Allerdings ist deine "Variable" ein Zeiger auf ein Objekt, das sich auf dem Heap befindet. Dieser Speicherplatz wird nicht automatisch freigegeben. Deshalb macht man üblicherweise einen Resourcenschutzblock um so eine Konstruktion:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TMainForm.FormCreate(Sender: TObject);
var
  List: TListItem;
begin
  List := TList.Create; // Objekt anlegen
  try // was auch immer hin drin passiert, ...
    ...
  finally // am Ende auf jeden Fall:
    List.Free; // freigeben!
  end;
end;
Weiterhin ist bei einer TList zu beachten, dass deren "Inhalte" (sind ja nur Zeiger) beim Freigeben des Objekts nicht mit freigegeben werden (wenn du z.B. auf records zeigst). :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Nano-Ware Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 7



BeitragVerfasst: Mo 07.12.09 13:50 
Ok danke, das hat geholfen^^