title image


Smiley Re: Create, Free -> Exception??
Nachdem Du die Bitmap im OnCreate erzeugst und weiterhin in anderen Ereignisbehandlungen verwendest, gehe ich davon aus, dass Du die entweder als globale Variable oder aber als Attribut deines Formulars verwendest.



Das macht die Sache ziemlich einfach:



Solltest Du im OnResize irgendwas stehen haben, ist das meist der Grund, weil ein Rezise auch noch nach Destroy ausgelöst werden kann (und meist auch wird). Ich schlage daher folgendes Verfahren vor:



in der FormDestroy schreibst folgenden Code rein:



Buffer.Free;

Buffer := nil; ← Das ist wichtig!



Bei jeder anderen Verwendung von Buffer kannst Du jetzt testen, ob er nil ist. Ist das der Fall, verwende ihn einfach net. Fertig aus, ganz einfach.



Memory Leaks bleiben in jedem Fall, wenn Du den Buffer nicht zerstörst, da der Destructor der Bitmap nicht aufgerufen wird. Die einzigen Elemente, die in Delphi unter einer automatischen Speicherverwaltung stehen, sind dynamische Arrays (dazu gehören auch Strings) und ausschließlich durch Interface- Variablen instanziierte Objekte. Also Variablen, die vom Typ IInterface oder Nachkommen sind (ähnlich wie TObject für alle Klassen die Vorfahrklasse ist, ist IInterface die Vorfahrschnittstelle für alle Interfaces).



Speicher also immer freigeben ;)



Überigens musst mir unbedingt mal sagen, wo Du das Programm her hast, also MemCheck mein ich, das bräucht ich auch :)



mfg & gl

Admin

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: