Notwendigkeit von clean-up Funktionen?!
-
@vir:
komm ja nicht auf dumme gedanken, und mache deinem usernamen alle ehre!mfG
h
-
chille07 schrieb:
@vir:
komm ja nicht auf dumme gedanken, und mache deinem usernamen alle ehre!mfG
h
vir: lat. "Mann"
Btw, du bringst einen auf Ideen *g*.
Interessehalber hab ich mal schnell so ein Programm geschrieben, was
sich Speicher schnappt und diesen nicht freigibt. Die Ergebnisse auf GNU/Linux (Linux 2.6.9) (Debian) sind unterschiedlich.Ich hoffe es ist legal, solchen Code zu posten, immerhin ist jeder in der Lage ihn selber zu schreiben:
#include <stdio.h> #include <stdlib.h> int main() { while (malloc(512) ? 1 : 0) ; puts("ready."); return 0; }
Ich hab das Programm paar mal ausgeführt, und mit `free -m` und `top` beobachtet.
Ergebnisse:
.....................................................................................................................
- Gleich nach Start hatte das Programm alles an freiverfuegbaren Speicher "absorbiert", es lief jedoch noch weiter...mit free konnt ich sehen, dass von 504MB 504/502/503 benutzt wurden. Es wechselste also zwischen 504/503/502 - wie kommt das zu Stande?
- Das System wurde langsam, die Maus hat gestockt...arbeiten konnte man nicht; top hat sich auch nicht mehr alle 3 Sekunden aktualisiert.Dann tratt eines der Folgenden Dinge ein:
- Das Programm wurde gekillt. ("Killed"), kurz davor oder dabei oder danach wurde bei mir auch Mozilla Firefox geschlossen...
- Die Grafische Oberflaeche X hat sich beendet(kA ob es sich beendet hat), ich landete in der Konsole...
- Alles wurde eingefroren, auf eine andere Konsole(Alt + Fx) zu springen war nicht möglich.Als das Programm gekillt wurde oder als X sich beendete oder beendet wurde, war der Speicherzustand normal.
Der ganze allokierte Speicher wurde also ge-free()'t......................................................................................................................
Kann mir jemand erklären wie die Unterschiedlichen Ergebnisse zu stande kamen?
Falls ich mich richtig entsinne, hab ich die Bytes, die malloc() allokieren soll, immer etwas verändert(Was vielleicht die unterschiedlichen Ergebnisse erklärt).
Wenn ich Zeit finde, werde ich es mal unter Windows XP Home testen, natürlich kann das auch einer von hier machen...
-
vir schrieb:
Dann tratt eines der Folgenden Dinge ein:
- Das Programm wurde gekillt. ("Killed"), kurz davor oder dabei oder danach wurde bei mir auch Mozilla Firefox geschlossen...
- Die Grafische Oberflaeche X hat sich beendet(kA ob es sich beendet hat), ich landete in der Konsole...
- Alles wurde eingefroren, auf eine andere Konsole(Alt + Fx) zu springen war nicht möglich.Und da solle noch einer behaupten Linux sei besser als Windows.
*scnr*
-
groovemaster schrieb:
Und da solle noch einer behaupten Linux sei besser als Windows.
*scnr*
ich mchte gerne wissen, wie windows da sich verhält. Bei einem Kumpel hab ich geschafft, ein Programme, die mit prinzahlen arbeitet und sie selber rechnet, dass in wenig als 20 Sekunden die Maschine von alleine neugestartet wwurde. Unter meinem Gentoo lief zwar alles langsam aber neu booten musste meine Maschine nicht. Den Source code hab ich leider nicht mehr, es ist schon ganzes Jahr her und weiß nicht mehr, was ich da gemacht hab.
-
ich hab ein programm geschrieben, welches unter windows primzahlen berechnet, und es hat den computer noch nie zum neustart gezwungen.
(funkt halt "NUR" bis unsigned long int; aber bis das erreicht ist, dauerts auch schon ne weile!)mfG (c)h
PS.: hängt vielleicht mit der windowsversion und dem verfügbaren speicher(virtuell und physisch) zusammen?
-
@vir:
Was, wenn du den Code mal wiederverwenden willst - in einer 24/7-Serrveranwendung?Sauberer Stil unterscheidet den Programmierer vom Kodieräffchen. Und da gehört Ressurcenfreigabe nunmal dazu. Und man sollte sich *immer* angewöhnen, das auch im kleinsten Projekt durchzuziehen. Sonst bleibt man lebenslang schlampig.
-
peterchen schrieb:
Sauberer Stil unterscheidet den Programmierer vom Kodieräffchen. Und da gehört Ressurcenfreigabe nunmal dazu. Und man sollte sich *immer* angewöhnen, das auch im kleinsten Projekt durchzuziehen. Sonst bleibt man lebenslang schlampig.
jaja.. schlampigkeit beim programmieren ist nicht besonders gut.
Bei größeren Projekten kennt man sich mit der Zeit nicht mehr aus,
und es können unerwartete Fehler auftreten.ABER: Wer im Glashaus sitzt, der werfe nicht mit Steinen!
und "Ressurcen"... ober ok: gott sei dank hast du nicht "Räsurrsän" geschrieben. :p(Ressourcen)
mfG (c)h
-
Hey! Ich kann richtig schreiben! Ich nutze nur meine Freiheit, das nicht zu tun
-
chille07 schrieb:
ABER: Wer im Glashaus sitzt, der werfe nicht mit Steinen!
und "Ressurcen"... ober ok: gott sei dank hast du nicht "Räsurrsän" geschrieben. :p(Ressourcen)
Ressurcen statt Ressourcen sieht für mich verdammt nach Tippfehler und nicht nach unwissenheit aus.
Ich werfe dir ja auch nicht dein
"ober ok" vor - weil ich weiß, dass du weißt, dass man "aber" mit "a" und nicht mit "o" schreibt.
-
"ober ok" is doch net folsch!
ich versuche möglichst in "deutscher" sprache zu schreiben, aber gelegentlich schleichen sich teile aus meiner Mundart ein. (Unter Freunden darf man doch in Mundart chatten, und wenn man während dem chatten postet.......
)
mfG (c)h