Hab was Lustiges in meinen bookmarks gefunden



  • http://www.c-plusplus.net/forum/300018

    Viel Spaß beim Lesen, hatte eigentlich nach was ganz Anderem in meinen bookmarks gesucht.

    Grüsse an cooky und tyroxx und sowieso auch an rüdiger.



  • Ich würde mich heute nicht mehr so ausdrücken, aber inhaltlich kann ich meinem bösen Klon aus der Vergangenheit voll und ganz zustimmen.



  • TyRoXx schrieb:

    Ich würde mich heute nicht mehr so ausdrücken, aber inhaltlich kann ich meinem bösen Klon aus der Vergangenheit voll und ganz zustimmen.

    LOl, das ist nicht unterirdisches C sondern immernoch ziemlich cool imho. 🙂



  • @TyRoXx: stimme dir zu ;), muss aber klugscheißen: POSIX definiert, dass recv einen ssize_t zurückgibt. Nicht einen int . Obwohl intern dann wahrscheinlich doch int verwendet wird, aber das weiß man nicht genau.
    Einen bool (gibt es in C eh nicht) würde ich nicht zurückgeben, aber auch keinen Assert machen, weil das dem Programmier die Möglichkeit nimmt, dynamisch darauf zu reagieren. Eigentlich machen ich immer einen Zwischentyp für alle Systeme, der die Fehlercodes zurückgeben kann ( DWORD unter Windows, int unter POSIX).

    Wutz schrieb:

    ich verwende realloc richtig.
    Und deine "Strategie" der Vermeidung von vielen realloc ist subjektiv, scheitert ein realloc mit diesen minimalen Raten irgendwann mal, hast du mit deinem Programm eh ganz andere Probleme.
    Deswegen kann man auch statt *b=0 *b=malloc(100000000) verwenden, was aber mit der Frage nichts zu tun hat.

    Autsch. m(
    Ich habe für meine HTTP-Implementierung damals ein Limit eingefügt, ab dem auf die Festplatte geschrieben werden kann, mit einem Zeiger, der auf den Namen der Datei zeigt. Mit select prüfe ich, ob beim Socket neue Daten innerhalb eines Zeitlimits vorliegen, und wenn nicht, wird halt abgebrochen, ansonsten vom Socket gelesen. Da macht man dann aber nicht jedes Mal realloc - ich habe damals einen naiven Heap-Strukt erstellt, der sich den Speicher, die Anzahl der Bytes und das Wachstum speichert, mit einer Funktion, die den Speicher automatisch erweitern lässt (wenn realloc funzt, super, wenn nicht, muss halt aufwendig mit memcpy , welches allerdings langsam ist wie ein dreibeiniges Nashorn, malloc und free hantiert werden). So spart man sich auf Systemen wie Macs, die meines Wissens jedes Mal einen Kernel-Call machen, wenn Speicher angefordert wird, Laufzeit.

    Ich finde es lustig, dass nach 20 Jahren WWW immer noch Streit darüber gibt, wie Server auf C-Ebene programmiert werden sollen. 😃


Anmelden zum Antworten