Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi speicher freigeben (https://www.delphipraxis.net/118479-speicher-freigeben.html)

Delphi-Phil 8. Aug 2008 11:47


speicher freigeben
 
Hallo Zusammen,

habe mal folgende Frage.

Wenn ich eine Prozedur habe, wie hier:
Delphi-Quellcode:
//Anwendung beenden mit Abfrage vorweg
procedure THauptForm.ProgrammBeenden1Click(Sender: TObject);
var
  buttonSelected : Integer;
begin
  // Show a confirmation dialog
  buttonSelected := MessageDlg('Wollen Sie das Programm wirklich beenden?',mtConfirmation, mbOKCancel, 0);

  // If confirm close the application
  if buttonSelected = mrOK    then Close;
end;
ist dann automatisch wenn die Prozedur durchgelaufen ist, der Speicher für die Var buttonSelected wieder freigegeben oder muss ich es vor Ende der Prozedur selber machen?

mirage228 8. Aug 2008 11:49

Re: speicher freigeben
 
Du musst diese Variable nicht selbst wieder freigeben. Die Aufräumarbeiten am Ende der Prozedur macht Delphi schon. Lediglich Objekte die du selbst erzeugt, müssen von Dir selbst auch wieder freigegeben werden. Bei nativen Typen wie Integer-Zahlen ist das nicht erforderlich.

Delphi-Phil 8. Aug 2008 11:50

Re: speicher freigeben
 
danke für die Antwort!

Viktorii 8. Aug 2008 14:37

Re: speicher freigeben
 
Zitat:

Zitat von mirage228
... Lediglich Objekte die du selbst erzeugt, müssen von Dir selbst auch wieder freigegeben werden. ...

Wie ist das denn wenn das Programm beendet wird ohne dass ich vorher das Objekt selber wieder freigegeben habe? Wir durch das Beenden des Programms der Speicher freigegeben, oder entsteht dann ein Speicherloch?

Delphi-Phil 8. Aug 2008 14:39

Re: speicher freigeben
 
meines wissens wird der speicher nach dem beenden von den gesammten programm wieder freigegeben.

Es läuft ja im System eh alles was du an speicher für eine anwendung reservierst unter einem prozess, der ja dann beendet wird...

Apollonius 8. Aug 2008 14:41

Re: speicher freigeben
 
Andernfalls wäre das eine ziemlich effektive Methode, den Computer unbenutzbar zu machen.

Tyrael Y. 8. Aug 2008 14:43

Re: speicher freigeben
 
Trotzdem sollte man sich grundsätzlich daran gewöhnen IMMER alle selbst erzeugten Objekte wieder frei zu geben.
So gewöhnt man sich an einen guten Programmierstil.

Ich habe es schon oft genug erlebt, daß mir gesagt wurde "Das Programm wird eh nur kurz geöffnet, die Funktionalität ausgeführt und danach beendet. Wen juckt es, ob ein Objekt freigegeben wurde oder nicht".

Delphi-Phil 8. Aug 2008 14:46

Re: speicher freigeben
 
sicherlich keine frage...

gerade wenn man große anwendungen programmiert und viel zwischen den Units rumspringt ist es wichtig immer alles wieder freizugeben!

sirius 8. Aug 2008 17:40

Re: speicher freigeben
 
Zitat:

Zitat von Apollonius
Andernfalls wäre das eine ziemlich effektive Methode, den Computer unbenutzbar zu machen.

Man erinnere sich nur an den Real-Mode :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 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-2025 by Thomas Breitkreuz