Ich wusste nicht genau, wo das reinpasst, deswegen schreib ich es in "Sonstiges".
Ich hatte folgende Funktion:
Quelltext
1: 2: 3: 4: 5:
| function TCharacter.GetBitmap: TBitmap; begin GetBitmap := TBitmap.Create; GetBitmap.LoadFromFile('guy.bmp'); end; |
Diese ist zwar sehr unpraktisch, weil das Bild immer wieder geladen wird, aber ich hatte es auch nur wegen der Einfachheit in ein Testprogramm eingebaut.
Nach ein paar Minuten stürzte der Rechner ab, weil immer mehr Speicher belegt wurde. Ich hab das Bild dann auch global gespeichert und mit einem Konstruktor initalisiert und mit einem Destruktor freigegeben, was natürlich ohne Probleme funktioniert.
Trotzdem würde mich interessieren, wie man das Problem löst, wenn man das Bild nicht global speichern will, also den Speicher in derselben Funktion wieder freigeben müsste.
Denn auch wenn ich eine Buffer Variable verwende und GetBitmap dann mit dem Buffer gleich setze, kann ich danach den Speicher, der für das BufferBild verwendet wird, nicht wieder freigeben