Zum Beispiel gibt es eine StrukturWarum Padding hinzugefügt werden, wenn Char nach Int kommt?
struct A
{
char a;
int i;
};
In diesem Fall haben wir ein [1 Byte] + padding [3 Byte] + int [4 Byte] = 8.
Lassen Sie uns jetzt etwas machen Aktualisierung in über Struktur,
struct A
{
int i;
char a;
};
in diesem Fall char nach int kommt und keine Notwendigkeit, Paddingbytes hinzuzufügen, bedeutet dies, sizeof (A) = 5 Byte, aber in diesem Fall auch die 8-Byte-Ergebnis, das ich bekommen. Warum ?
Ok, und was ist mit diesem Fall
struct s
{
int b;
double c;
char a;
};
Logik weiter unten Nach besteht ein: size = b[4 bytes] + padding[4 bytes] + c[8] + a[1] + padding[7 bytes to align with double] = 24
, aber nach der Ausführung I 16 erhalten, wie dies möglich?
Aber ist es richtig, , dass Doppel kann mit Offset beginnen, der ein Vielfaches von 8 ist? In Ihrer Erklärung ist der Offset von double gleich 5. –
@ user2846015; Wie groß ist die Größe von 'struct s { double c; int b; Zeichen a; }; '? – haccks
in dieser Reihenfolge wird es c [8] + b [4] + a [1] + Padding [3, um mit Doppel auszurichten] = 16 –