Zum Inhalt springen

Wie lange sind statische Member einer Klasse im Speicher ?


Mr. Miyagi

Empfohlene Beiträge

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. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...