Einzelnen Beitrag anzeigen

var-king

Registriert seit: 8. Jan 2009
10 Beiträge
 
Turbo Delphi für Win32
 
#1

Erneutes Laden von Bitmaps: Speicherplatz freigeben

  Alt 27. Sep 2011, 11:50
Hallo allerseits,

ich arbeite zur Zeit an einem Programm, das über Bildbearbeitungsfunktionen verfügt, aber auch durch einen schnellen Klick zwischen allen Bildern eines Ordners durchswitchen kann, wie die Vor-Zurück-Pfeile in der Windows-Fotogalerie, wenn man mal schnell Bilder gucken will.

Ich realisiere dies durch Laden des aktuellen Bildes in eine Klasse, unter anderem mit den folgenden Bitmaps
Delphi-Quellcode:
type Tbild = class
  original, current: TBitmap;
  last: array [1..10] of TBitmap;
  {.....}
end;
Diese Bitmaps brauche ich für die Bearbeitungsfunktionen; current stellt die Bitmap mit der aktuellen Version des Bildes dar, ist aber zur Öffnungszeit mit original gleich.

Mein Problem: Beim eben erwähnten "Bilder-Gucken" geht der Speicher sehr schnell fritte, nach ca 20-30 10MP-Bildern ist zumindest an meinem PC Schluss ("Für den angeforderten Befehl steht kein Speicher mehr zur Verfügung"). Natürlich liegt das an den obigen zwölf Versionen meines Bildes.

Allerdings ändert sich dadurch auch nichts, dass ich vor dem Laden eines neuen Bildes versuche, den ganzen Speicherplatz wieder freizugeben:
Habe nun über
freeandnil(bild)
hin zu
Delphi-Quellcode:
  bild.current.Free;
  bild.original.Free;
  for i := 1 to 10 do
    bild.last[i].free;
  bild := TBild.init
alles versucht, es hilft nichts.
Wer hat eine Idee, wo mein Fehler sein könnte, bzw. der Speicher nicht freigegeben werden kann?

Danke im Voraus!
  Mit Zitat antworten Zitat