Ich kämpfe gerade damit zu überblicken, was wann automatisch gelöscht wird, und was ich selber löschen muss.
Klar ist, alle möglichen Variablen verschwinden automatisch am Ende der Funktion, sofern sie nicht "static" sind.
Auch klar sind DC´s und Bitmap´s, die muss ich selber entfernen.
Aber beim Rest habe ich irgendwie keinen Überblick:
Wenn ich ein Fenster erstelle muss ich es wieder zerstören, child Fenster werden beim Zerstören des Parent automatisch mit gelöscht, aber was ist mit POPUP´s die nicht als WS_CHILD definiert sind? Offensichtlich verschwinden alle POPUP´s einer Anwendung, genau wie Dialoge oder MessageBox(), wenn man die Anwendung schliesst, auch dann, wenn z.B. eine MessageBox als HWND NULL hat, aber warum?
Wenn ich ein struct erstelle muss ich es auch wieder löschen, aber was ist mit denen, die Windows mir vorgibt?
Ich definiere
RECT rect;
dann fülle ich es mit Werten, nutze die Werte usw.
Und nu? Wann wird das rect wieder gelöscht?
Das struct selber muss erhalten bleiben, soviel ist mir klar, aber was ist mit dem Inhalt?
Was ist mit HANDLE?
HANDLE hFile;
Ich kann mit einem HANDLE beliebig oft CreateFile() und CloseHandle() machen, aber wann wird das HANDLE selbst gelöscht?
Gibt es irgendwo eine Liste der Dinge die automatisch gelöscht werden und was man selber löschen muss?
Am Rande habe ich irgendwo gelesen, dass man der Automatik nicht immer trauen kann, Sachen die automatisch gelöscht werden sollten bleiben manchmal trotzdem im Speicher hängen, wie vermeidet man das nun wieder?
Klar ist, alle möglichen Variablen verschwinden automatisch am Ende der Funktion, sofern sie nicht "static" sind.
Auch klar sind DC´s und Bitmap´s, die muss ich selber entfernen.
Aber beim Rest habe ich irgendwie keinen Überblick:
Wenn ich ein Fenster erstelle muss ich es wieder zerstören, child Fenster werden beim Zerstören des Parent automatisch mit gelöscht, aber was ist mit POPUP´s die nicht als WS_CHILD definiert sind? Offensichtlich verschwinden alle POPUP´s einer Anwendung, genau wie Dialoge oder MessageBox(), wenn man die Anwendung schliesst, auch dann, wenn z.B. eine MessageBox als HWND NULL hat, aber warum?
Wenn ich ein struct erstelle muss ich es auch wieder löschen, aber was ist mit denen, die Windows mir vorgibt?
Ich definiere
RECT rect;
dann fülle ich es mit Werten, nutze die Werte usw.
Und nu? Wann wird das rect wieder gelöscht?
Das struct selber muss erhalten bleiben, soviel ist mir klar, aber was ist mit dem Inhalt?
Was ist mit HANDLE?
HANDLE hFile;
Ich kann mit einem HANDLE beliebig oft CreateFile() und CloseHandle() machen, aber wann wird das HANDLE selbst gelöscht?
Gibt es irgendwo eine Liste der Dinge die automatisch gelöscht werden und was man selber löschen muss?
Am Rande habe ich irgendwo gelesen, dass man der Automatik nicht immer trauen kann, Sachen die automatisch gelöscht werden sollten bleiben manchmal trotzdem im Speicher hängen, wie vermeidet man das nun wieder?