verkettete liste innerhalb char-array
-
Hallo,
zur Übung will ich einen Speicherpool schreiben, dazu alloziere ich eine Menge an Speicher über ein char-Array. Das char-Array wird in gleich große Blöcke unterteilt, die dann verkettet werden.
Ich schreibe also in den ersten Block die Adresse des nächsten Blocks.Folgender Code funktioniert abern nicht wie erwartet:
int main() { char mem[16]; *(reinterpret_cast<void**>(mem)) = reinterpret_cast<void*>(mem+sizeof(void*)); std::cout << reinterpret_cast<void*>(mem) << "\n"; std::cout << reinterpret_cast<void*>(*mem) << "\n"; }
Ausgabe entweder in der Form:
0x7fff43cbf1c0 0xffffffffffffffc8
oder
0x7fff2a8c0230 0x38
ich erwarte aber:
0x7fff2a8c0230 0x7fff2a8c0238
Wenn ich mir von gdb direkt den Speicherinhalt ausgeben lasse (8B) bekomme ich:
(gdb) x/1xg 0x7fffffffe060 0x7fffffffe060: 0x00007fffffffe068
Also siehts im Debugger richtig aus...
Wo liegt mein Fehler?
Danke schonmal im Voraus.
-
(*mem) ist doch ein char.
-
Achso, also anstatt die 8 Bytes als Pointer zu interpretieren wird nur das erste Byte als Pointer interpretiert?