exit()
-
Hi,
ist es unsauber sein Programm zu beenden ohne vorher alle Ressourcen wieder freizugeben oder wird von jedem System erwartet hinterher alles sauber zu machen?
zB:void foo() { .. bar = malloc(5); baz = malloc(10); if (!bar || !baz) exit(9999); free(bar); free(baz); }
Und wie siehts bei Systemen aus bei denen klar ist dass die alles sauber machen? (Hier: Windows)
void foo() { .. WSAStartup(..); sock = socket(..); if (!sock) exit(2343); WSACleanup(); }
-
Der C Standard definiert keine Anforderungen an das jeweilige Betriebssystem, zumindest nicht in dem von dir genannten Umfeld. Ob der Compilerbauer die evtl. vom Betriebssystem angebotenen Möglichkeiten vollständig ausnutzt oder es bleiben lässt, ist Sache des Compilerbauers und nicht des Sprachstandards.
-
cooky451 schrieb:
Und wie siehts bei Systemen aus bei denen klar ist dass die alles sauber machen? (Hier: Windows)
Wenn das OS das selbständig macht, dann kann man sog. drauf verzichten. Aber es gibt dennoch gute Gründe dagegen.
- wenn du dein Code später irgendwo portieren willst, wo das nicht mehr zutriffst, wirst du fluchen.
- es ist auch eine Frage des guten Stils. Stell dir vor, du willst zu Hause ein Bild an die Wand hängen. Du nimmst einen Nagel und einen Schraubenzieher und nagelst den Nagel mit dem Schraubenzieher rein. Keine Frage, je nach Qualität der Wand und des Schraubenziehers, ist das alles kein Problem. Ist dennoch kein guter Stil und man sollte lieber auf einen Hammer zurückgreifen.
-
Schraubenzieher? Ich hab doch nen Daumen?!?
Naja, besten Dank alles geklärt