struct größe



  • hallo leute

    ich hab grad folgenden test gemacht:

    struct test1
    {
       char a1[1];
       char a2[4];
       char a3[2];
       char a4[1];
    };
    
    struct test2
    {
       char a1;
       int a2;
       short a3;
       char a4;
    };
    
    auto main(int, char**) -> int
    {
       std::cout << "sizeof(test1) = " << sizeof(test1) << std::endl;
       std::cout << "sizeof(test2) = " << sizeof(test2) << std::endl;
       return 0;
    }
    

    ergebnis:

    sizeof(test1) = 8
    sizeof(test2) = 12
    

    ich hab hier einfach all die verschiedenen membervariablen durch char arrays abgebildet.
    ist es vom standard so geregelt das char-arrays immer ohne padding-bytes im speicher hintereinander abgelegt werden ? oder ist das vom compiler abhaengig ?

    Meep Meep



  • Da ein char die kleinste adressierbare Einheit ist, kann es auf jeder Adresse liegen.

    Warum sollten da Padding-Bytes eingefügt werden, wenn kein Alignment nötig ist?


Anmelden zum Antworten