Avatar ·

Warum ist sizeof(Struktur) nicht gleich der Summe von sizeof aller ihrer Felder in C++?

Hallo! Ich habe angefangen, C++ zu lernen, und bin auf ein unverständliches Verhalten gestoßen. Ich habe eine einfache Struktur:\n\n```cpp\nstruct MyStruct {\n char c; // 1 Byte\n int i; // 4 Bytes\n short s; // 2 Bytes\n};\n```\n\nLogischerweise erwarte ich, dass die Größe dieser Struktur 1 + 4 + 2 = 7 Bytes beträgt. Wenn ich jedoch `sizeof(MyStruct)` ausgebe, zeigt der Compiler 12 an! Warum passiert das? Ich habe es mit verschiedenen Feldreihenfolgen überprüft, und die Größe ändert sich. Wenn ich zum Beispiel `int` an die erste Stelle setze, wird die Größe manchmal 8. Ist das ein Compiler-Bug oder verstehe ich etwas nicht? Bitte erklärt mir, wie die Speicherzuweisung für Strukturen in C++ tatsächlich funktioniert.