Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Speicher freigeben (https://www.delphipraxis.net/20610-speicher-freigeben.html)

Jessy_ 20. Apr 2004 13:12


Speicher freigeben
 
Wie gesagt versuche ich bei meinem Programm hinterher den Speicher per Befehl wieder freizugeben.
Die Speicher der Zeiger kann man ja mit dispose(zeiger) wieder freigeben. Aber wie geb ich den gesamten Speicher frei?

Mit MemAvail läst sich ja die Größe des genutzten Speichers ermitteln...wie kann ich diesen löschen so das nach Aufruf der Funktion eine Größe von Null Bites angezeigt wird?

wartend und rumprobierend
Jessy

Ultimator 20. Apr 2004 13:15

Re: Speicher freigeben
 
Öhm, du solltest vielleicht nicht deinen gesamten RAM löschen, dann funzt nämlich gar nix mehr.
Windows legt ja auch seine ganzen Sachen im RAM ab, und nicht zusätzlich auf der Festplatte(falls ja mal jemand auf die Idee kommen sollte, den RAM zu leeren). Das wäre viel zu langsam.
Ich glaube nicht, dass du deinen gesamten Arbeitsspeicher leeren kannst.

Jessy_ 20. Apr 2004 15:40

Re: Speicher freigeben
 
Ehm...das meinte ich ja auch garnicht. Ich will NUR das der Speicher nachdem das Proggie ausgeführt wurde wieder in den gleichen Zustand zurückversetzt wird. Sprich das die Größe des freien Speichers genauso ist wie vorher.

Muetze1 20. Apr 2004 15:44

Re: Speicher freigeben
 
Moin!

Dann musst du dafür sorgen, das alles was du in deinem Programm alloziierst und instanziierst auch wieder ordentlich freigibst...
Anders kann ich das auch nicht sagen - du musst in deinen Quellcode schauen.

Ansonsten ist auch grundlegend folgendes zu sagen:

1. Wenn dein Prozess beendet wird, dann wird der vom Programm belegte Speicher so oder so vollständig wieder freigegeben.
2. Windows legt sich Puffer und Caches im Speicher an und daher kann es sehr gut sein, das Windows dies auch beim Ausführen deines Programmes macht, bzw. vorhandene vergrössert und daher der Speicher nach deinem Programm immer ein wenig kleiner ist. Dies ist aber auch in so fern kein Problem, weil Windows speicher braucht, dann verkleinert er auch wieder seine Speicher und/oder lagert aus...

MfG
Muetze1

shmia 20. Apr 2004 15:49

Re: Speicher freigeben
 
Zitat:

Zitat von Jessy_
Ich will NUR das der Speicher nachdem das Proggie ausgeführt wurde wieder in den gleichen Zustand zurückversetzt wird. Sprich das die Größe des freien Speichers genauso ist wie vorher.

Genau das ist der Fall. Wenn dein Programm (= Prozess) beendet wird, räumt Windows
(zumindest die Versionen NT/2000/XP) automatisch auf.
Auch offene Dateihandles usw. werden bei Prozessende automatisch geschlossen.
Allerdings sollte dies keine Entschuldigung für schlampiges Programmieren sein.
Jeder Speicher, jedes Handle oder sonstige Resource, die ein Prozess angefordert hat
soll er beim Ende wieder freigeben.
Manchmal ist der Taskmanager der Meinung es wäre nach Prozessende weniger RAM da wie vorher,
aber das ist nur ein Bug.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz