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