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
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.
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?
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.
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?
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden