Guybrush Threepwood Geschrieben 24. September 2003 Geschrieben 24. September 2003 Hi, was passiert eigentlich mit reserviertem Speicher, offenen Filehandles usw., wenn man ein Programm debugt und mittendrin den Debug beendet? Werden die dann vom debugger geschlossen/ freigegeben, oder dümpeln die dann als Lecks vor sich hin? Gruß Guybrush Zitieren
Klotzkopp Geschrieben 24. September 2003 Geschrieben 24. September 2003 Das Betriebssystem kümmert sich darum, hinter einem beendeten Prozess aufzuräumen. Das passiert unabhängig davon, wie der Prozess beendet wurde, normal oder durch Beenden des Debuggers. Zitieren
Guybrush Threepwood Geschrieben 24. September 2003 Autor Geschrieben 24. September 2003 Das heist also, das wenn z.B. Windows den reservierten Speicher des Prozesses nicht freigibt (was es ja nicht macht), bleiben evtl. Speicherlecks wenn man den Debugvorgang vorzeitig abbricht? Zitieren
Klotzkopp Geschrieben 24. September 2003 Geschrieben 24. September 2003 Original geschrieben von Guybrush Threepwood Das heist also, das wenn z.B. Windows den reservierten Speicher des Prozesses nicht freigibt (was es ja nicht macht), bleiben evtl. Speicherlecks wenn man den Debugvorgang vorzeitig abbricht? Nein. Windows räumt auf, wenn ein Prozess beendet wird, d.h. belegter Heap- und Freestorespeicher wird freigegeben, offene Handles werden geschlossen, geladene DLLs entladen (wenn kein anderer Prozess darauf zugreift) usw. Dabei ist es egal, ob der Prozess normal terminiert hat, durch Abbrechen des Debuggers "abgewürgt" oder durch den Taskmanager, eine API-Funktion oder eine unbehandelte Ausnahme "abgeschossen" wurde. Zitieren
Guybrush Threepwood Geschrieben 25. September 2003 Autor Geschrieben 25. September 2003 Original geschrieben von Klotzkopp Nein. Windows räumt auf, wenn ein Prozess beendet wird, d.h. belegter Heap- und Freestorespeicher wird freigegeben, offene Handles werden geschlossen, geladene DLLs entladen (wenn kein anderer Prozess darauf zugreift) usw. Wenn ich mir aber doch Speicher zur laufzeit reserviere (mit malloc oder new oder so), dann muss ich den ja selber wieder freigeben. Wenn ich jetzt den Debugmodus beende bevor er an der Stelle ankommt wo ich den Speicher wiederfreigebe, dann müßte doch ein Speicherleck übrigbleiben, oder bin ich jetzt total auf dem Holzweg? Zitieren
Goos Geschrieben 25. September 2003 Geschrieben 25. September 2003 Original geschrieben von Guybrush Threepwood Wenn ich jetzt den Debugmodus beende bevor er an der Stelle ankommt wo ich den Speicher wiederfreigebe, dann müßte doch ein Speicherleck übrigbleiben, oder bin ich jetzt total auf dem Holzweg? Deine Memoryleaks sind doch ansich nix boeses Es geht dabei ansich immer auch eher darum, dass dein Programm zur Laufzeit nicht immer weiter im Speicher anwaechst und am Ende vielleicht noch abstuerzt. Wenns beendet wurde dann ist das egal, dann wird vom System aufgeraeumt. (Obwohl auch das schiefgehen kann) Original geschrieben von Guybrush Threepwood Wenn ich mir aber doch Speicher zur laufzeit reserviere (mit malloc oder new oder so), dann muss ich den ja selber wieder freigeben. Und wenn du ihn nicht freigibst, dann warst halt schlampig Goos Zitieren
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.