C++ Wissenswertes
Beispiele erstellt auf g++ 4.3.3 ubuntu 9.04 amd64.
// sizeof(char) == 1 // sizeof(short) == 2 // sizeof(int) == 4 // sizeof(long) == 8 // sizeof(char*) == 8 struct A { char c1; };// sizeof(A) == 1 struct B { char c1; char c2; };// sizeof(B) == 2
struct C { short s1; char c1; };// sizeof(C) == 4
| 0 | 1 | 2 | 3 |
| s1 | s1 | c1 | x |
1 byte Padding am Ende eingefügt, um s1 in einem Array von C auf 2byte auszurichten.
struct D { char c1; short s1; };// sizeof(D) == 4
| 0 | 1 | 2 | 3 |
| c1 | x | s1 | s1 |
1 byte Padding nach c1 eingefügt, um s1 auf Größe des nachfolgenden Typs (short 2byte) auszurichten.
struct E { char c1; short s1; char c2; };// sizeof(E) == 6
| 0 | 1 | 2 | 3 | 4 | 5 |
| c1 | x | s1 | s1 | c2 | x |
1 byte Padding nach c1 eingefügt, um s1 auf Größe des nachfolgenden Typs (short 2byte) auszurichten. 1 byte Padding am Ende eingefügt, um E auf ein vielfaches von Größe des größten Typs auszurichten.
struct F { char c1; char c2; short s1; };// sizeof(F) == 4
| 0 | 1 | 2 | 3 |
| c1 | c2 | s1 | s1 |
Kein Padding benötigt.
Sende ein Kommentar, Frage, Korrekturen, Beschimpfungen...
doxapp c++ Zur Übersicht home