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?


Log in to reply