Reservierung von Speicher für Zeiger auf Strukturen mit zwei weiteren Zeigern



  • Hallo Zusammen,

    ich hab mir vor kurzem einen Quelltext eines anderen Programmierers zu Sachen CGI durchgelesen. Der Autor des Listings verwendet dabei eine Struktur die so aussieht:

    struct CGI_DATEN
    {
       char *variable;
       char *daten;
       CGI_DATEN *next;
    };
    

    Im Code verwendet er die Struktur wie folgt:

    CGI_DATEN * ptr_anfang;
    ptr_anfang =(struct CGI_DATEN *) malloc(sizeof (struct CGI_DATEN *));
    

    Nur warum reserviert er hier Speicher für einen Zeiger auf diese Struktur, die er dann dem Zeiger ptr_anfang zuweist ? (bzw. einen Zeiger allgemein, denn die Zeigergröße ist ja immer 4 Bytes, unabh. vom Zeigertyp [jedenfalls auf einer 32Bit Machine])
    Ich meine wieso reserviert er nicht 8 Bytes ?? Der Zeiger ist doch vom Typ CGI_DATEN...und die Struktur CGI_DATEN enthält zwei Zeiger auf char, also 2* 4 Bytes (pro Zeiger) ergäbe doch 8 Bytes mindestens, die für diese Struktur reserviert werden müssten. Oder habe ich da was falsch verstanden ?

    Schönen Gruß
    Xzibit



  • Wie kommst du auf 8 ?
    es sind 3 pointer.
    Kurt
    EDIT: das Beispiel ist entweder falsch oder einfach aus dem Zusammenhang gerissen.
    EDIT: tendiere mehr zu falsch.



  • Oh hoppala sry for that
    wollte eigentlich schreiben: 12 Bytes



  • ich vermute auch einen programmierfehler. da war wohl eher

    CGI_DATEN * ptr_anfang; 
    ptr_anfang =(struct CGI_DATEN *) malloc(sizeof (struct CGI_DATEN));
    

    gemeint. da die meisten betriebssysteme speicher in blöcken von 16 oder mehr bytes allozieren, ist der fehler wohl nicht aufgefallen.



  • Ein Programmierfehler ? Huh....*mir fällt ein Stein vom Herzen*

    Und ich hab schon die letzte Woche damit verbracht daran rumzurätseln,
    warum der das so macht _- ja hab sogar mein Wissen über Assembler extra aufgefrischt *grinst*, weil ich mir dachte die Antwort da zu finden.

    Ja sehr gut...nur ein Programmierfehler 😉

    Gut gut VIELEN DANK
    und einen schönen Gruß von mir
    Christoph aka. Xzibit


Anmelden zum Antworten