stilfrage



  • shade
    *****

    was isn an meiner ersten variante blödsinn? bis auf das es nicht statisch ist...???

    bye

    PS: und ich caste malloc so oft und gerne wie ich möchte...ich vertraue dem compiler nicht "absolut"



  • TheTester schrieb:

    ...
    PS: und ich caste malloc so oft und gerne wie ich möchte...ich vertraue dem compiler nicht "absolut"

    Also _das_ ist jetzt wirklich Blödsinn! Es gibt IMHO keinen guten Grund, warum man malloc() casten sollte und damit schlauer sein will als der Compiler. Überdeckst Du an Deinem Auto auch das Öl-warm-Lämpchen, wenn es aufleuchtet?!?



  • nu ja sagen wirs so ich mach das vielleicht aus reiner faulheit damit ich weiss was malloc für einen rückgabewert hat sprich das ich weiss was das für eine variable ist die ne adresse von malloc zugewiesen bekommt...sonst müsste ich immer erst nachschauen wenn ichs mal vergessen hab das finde ich mühselig

    meinetwegen mag das nicht rational und auch wirklicher blödsinn sein *schulterzuck* is mir aber egal 🙂 da ich eher son quartalsprogrammierer bin und damit bis jetzt noch nie probleme hatte 🙂

    bye



  • TheTester schrieb:

    was isn an meiner ersten variante blödsinn? bis auf das es nicht statisch ist...???

    mehr speicher verbrauch (nämlich 1 pointer)
    längere laufzeit (durch die indirektion und einen malloc/free aufruf)
    potentielles speicherleck (ein free() kann man ja mal vergessen)

    weiters sieht
    *p=foo();
    einfach doof aus - und ich habe es noch nie gesehen...

    und ich caste malloc so oft und gerne wie ich möchte...ich vertraue dem compiler nicht "absolut"

    1. solltest du deinem compiler vertrauen, denn der versteht mehr von C und optimierungen als du (oder ich oder sonstwer)
    2. kann ein casten bei malloc einen fehler erzeugen. nämlich dann wenn du vergisst stdlib.h zu inkludieren und ein zeiger nicht genausogross wie ein int ist. dann gibts undefiniertes verhalten. und wofür? für nix und wiedernix.

    du sagst der stil ist dir egal?
    ja, was fragst du uns dann??



  • weil ich dich nich zum stil von meinem malloc gefragt hatte 🙂 und das andere hab ich dann schon abgeändert :)(ja und auch malloc wobei es mir schleierhaft ist wie man vergessen kann die stdlib einzubinden...)

    bye



  • TheTester schrieb:

    wobei es mir schleierhaft ist wie man vergessen kann die stdlib einzubinden...)

    zB um kompilier Zeit zu sparen.
    du inkludierst keine header und kannst so schneller kompilieren.

    bzw. in irgendeiner datei kann man ja das include vergessen - dann warnt dich niemand wenn du castest. wenn du nicht castest kommt mindestens eine warnung.



  • naja ich war noch nie in der verlegenheit header exkludieren zu müssen um compile zeit zu sparen 😉 meine projekte sind eher so winzig...ob das nun in 2 oder 5 sek. kompiliert macht mir nix aus 😉

    jo und das mit den warnings und malloc hab ich schon begriffen...

    bye

    tt



  • wobei

    inhalt = (Sbla*)malloc(sizeof(*inhalt));
    

    nicht nur wegen dem Cast schlimm ist, sondern auch weil du einen Zeiger dereferenzierst, der nicht initalisiert ist!

    Aber zur eigentlichen Frage

    ich würde möglichst dafür sorgen, dass ich kein Dinge zurückgebe, die ein User explizit freigeben muss, dass kann man leicht vergessen (natürlich rede ich nicht von Funktionen, wo klar ist, dass diese Daten zurückgeben, die man explizit freigeben muss 🙄 )

    Ansonsten kannst du außerdem noch folgendes machen

    void foo(const char *filename, sbla *obj);
    


  • kingruedi schrieb:

    wobei

    inhalt = (Sbla*)malloc(sizeof(*inhalt));
    

    nicht nur wegen dem Cast schlimm ist, sondern auch weil du einen Zeiger dereferenzierst, der nicht initalisiert ist!

    augen auf du schlafmuetze.
    *inhalt wird innerhalb von sizeof aufgerufen, folglich dereferenziert es nicht den wert, sondern den typen 😉



  • Ich habe festgestellt das das Buch
    C Elements of Style von Steve Oualline ein sehr guter Style Guide ist.

    Aus meiner Sich würde ich auch zu dem malloc und free im aufrufenden Programm tendieren, habe schon eine Menge Schlechter erfahrung gemacht mit ''versteckten Allocierungen''

    🕶


Anmelden zum Antworten