unterschiedliche sizeof struct (Win vs. Linux)



  • Hallo Leute,
    ich schreibe grad Plattformübergreifenden code und benutze
    ein struct zur Client-Server-Kommunikation.

    Bei Empfang der Daten überprüfe ich anhand der Länge der erhaltenen Daten
    um welches struct es sich handelt.

    Und genau dabei ist mir eine kleine Ungereimtheit aufgefallen.

    Und zwar ist das struct unter win 72 Bytes groß.
    Von dem Linux-Client kamen aber nur 68.

    also: größe der vorkommenen Datentypen vergleichen. Ergebnis, alle verwendeten
    Datentypen haben unter Win und Linux die selbe Größe.

    Ich hoffe Ihr könnt mir rasch bei diesem Wissensproblem helfen.

    Danke 👍
    😋



  • Der Unterschied liegt nicht an der Größe der Datentypen, sondern daran, dass der Compiler aus gründen der Effizienz die Elemente an DWord Grenzen ausrichtet. (CPU kann dann schneller darauf zugreifen)

    Diese Sache kann man bei fast allen Compilern einstellen. (struct member align).



  • Ihr seid ja fix!

    Ich danke Dir für den Hinweis, werde den Wert angleichen und es nochmal nachlesen, denn wirklich verstanden hab ich es nicht 🙂

    Dennoch vielen Dank !



  • Oppodelldog schrieb:

    Ich danke Dir für den Hinweis, werde den Wert angleichen und es nochmal nachlesen, denn wirklich verstanden hab ich es nicht 🙂

    könntes auch mal nach "padding bytes" suchen


Anmelden zum Antworten