struct grösse



  • Hallo,

    Wenn ich mir in einem Programm die Grössen der verschiedenen Datentypen ausgeben lasse, steht dort, daß eine short Variable 2 Byte gross ist. Wenn ich jetzt eine Struktur mit 2 Short und einer Byte Variablen erstelle, ist eine Variable von diesem Typ 6 Byte gross und nicht nur 5 Byte. Wieso ?

    typedef struct
    {
    	short a;
    	short b;
    	unsigned char x;
    } farbe_t;
    


  • wie ist denn die "struct-Element-Ausrichtung"? Oft liegt die standartmäßig auf 8 byte, d.h. Strukturen werden immer ausgerichtet, statt dass genau immer die Summe der einzelnen Attributgrößen reserviert wird.



  • Das liegt daran, dass der Compiler die Strukturgrößen meist so groß wählt, dass die Adressen durch 2 oder durch 4 Byte teilbar sind. Damit ermöglicht er einen schnelleren Zugriff auf die dort abgelegten Daten. Bei einer Größe von fünf Byte müsste er zwei Operationen ausführen um drauf zuzugreifen. Einmal bis zum 4 Byte und dann noch einmal ein Byte. Hat was mit dem 32-Bit bzw. 16Bit System zu tun.


Anmelden zum Antworten