Speicherbelegung von structs/klassen festlegen



  • Hallo,

    kann man in c++ die Speicherbelegung von structs bzw klassen festlegen, also, dass bestimmte Variablen im Speicher weiter vorne liegen?
    Hintergrund ist, dass ich überlegt habe, dass man per

    mystruct stc;
    char* = (char*)&stc;
    

    Den Speicherbereich einer struct (oder eines class pointers ?) abgreifen kann und man so ziemlich einfach an die Daten für eine Serialisierung kommen kann (wenn man die Länge kennt)

    Nun besteht das Objekt ja auch aus Daten, die man nicht speichern kann oder braucht, deshalb die Frage ob man die notwendigen Bytes also an den Anfang des Speicherbereichs setzen kann?



  • 1. Die Member liegen genau in der Reihenfolge im Speicher, wie sie in der struct/class deklariert sind (nur Padding bleibt offen).
    2. Das Offset bekommst du mit offsetof aus cstddef.
    3. Die Addresse eines Objekts bekommt man mit &reinterpret_cast<char&>(str) oder std::addressof .
    4. Das ist so ziemlich die schlechteste Herangehensweise ans Serialisieren
    5. Niemand wird je seine Klassen nach "Serialisierbarkeit" aufbauen (zumal es zu Performanceeinbussen führen kann, wenn die Datenmember nicht klug angeordnet sind).
    6. Speicherserialisierung, srsly?


Log in to reply