Mr. Miyagi Geschrieben 17. August 2009 Teilen Geschrieben 17. August 2009 Tag alle zusammen, soweit ich das mitbekommen habe, werden statische Member einer Klasse oder Typen beim Start des Programms einmalig initialisiert, und können dann auch ohne eine Instanz des jeweiligen Objektes direkt aufgerufen werden (solange sie nicht protected oder private in dieser sind). Aber wann werden die Daten denn eigentlich wieder gelöscht ? Sind diese dann bis zum Programmende im Speicher, oder nur solange wie mindestens ein Objekt der jeweiligen Klasse existiert ? Was auch komisch wäre, da - wie oben erwähnt - sie ja kein Objekt der eigenen Klasse benötigen. Wenn ich z.B. versuche mein Projekt zu beenden und den Ordner zu löschen sagt mir Windows: „Die Aktion kann nicht abgeschlossen werden, da der Ordner in einem anderen Programm geöffnet ist.“ Hab ich da vergessen irgendwo Speicher wieder frei zu geben (verwende aber kein new *** in dem Projekt) oder hab ich was initialisiert, was ich vergessen hab wieder zu beenden? Danke für eure Hilfe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 17. August 2009 Teilen Geschrieben 17. August 2009 Static-Klassenmember haben "static storage duration", d.h. sie existieren so lange, wie das Programm läuft. Die Reihenfolge der Zerstörung ist umgekehrt zur Erzeugung. Ich würde erst einmal prüfen (z.B. mit Process Explorer), welches Programm da noch ein Handle auf den Ordner hat. Vielleicht ist es ja gar nicht deins. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mr. Miyagi Geschrieben 17. August 2009 Autor Teilen Geschrieben 17. August 2009 Ich würde erst einmal prüfen (z.B. mit Process Explorer), welches Programm da noch ein Handle auf den Ordner hat. Vielleicht ist es ja gar nicht deins. Sehr schönes Tool und Danke für die Antwort zu den Statics. Ist tatsächlich kein Überbleibsel meines Programms. Es greift noch ein anderer Prozess auf den Ordner zu. Ist es eigentlich überhaupt möglich, dass ich mein Programm komplett beende, es noch irgendwo Reste im Speicher „herum liegen“ und man deswegen den Ordner nicht löschen kann? Nur für den Fall, dass mal kein weiterer Prozess auf meine Programme zugreift und ich anfange zu rätseln. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 18. August 2009 Teilen Geschrieben 18. August 2009 Ist es eigentlich überhaupt möglich, dass ich mein Programm komplett beende, es noch irgendwo Reste im Speicher „herum liegen“ und man deswegen den Ordner nicht löschen kann? Man kann beim Programmende (bzw. beim Klick auf den "Schließen"-Button) doch einfach eine statische Funktion wie "unload" oder sowas aufrufen, wenn das Programm eh geschlossen wird, dann fängt man halt da schon mit den "Aufräumarbeiten" an. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.