Warum sind aufeinanderfolgende int-Datentypvariablen in Visual Studio um 12 Byte versetzt?

Beachten Sie zur Klärung der Frage das Codefragment c / c ++:

int a = 10, b = 20, c = 30, d = 40; //consecutive 4 int data values.

int* p = &d; //address of variable d.

Wenn Sie nun in Visual Studio (getestet 2013) den Wert p == hex_value (der im Debugger-Speicherfenster angezeigt wird) haben, können Sie beobachten, dass die Adressen für die anderen Variablen a, b, c und d sind jeweils mit 12 byte unterschied!

Also, wennp == hex_value, dann folgt es:

&c == hex_value + 0xC (Beachten Sie, Hex C ist 12 in Dezimal)

&b == &c + 0xC

&a == &b + 0xC 

Warum gibt es also einen Versatz von 12 Bytes anstelle von 4 Bytes - int sind nur 4 Bytes?

Wenn wir nun ein Array deklarieren:

int array[]  = {10,20,30,40};

Die Werte 10, 20, 30, 40 liegen erwartungsgemäß bei 4 Byte Unterschied!

Kann jemand bitte dieses Verhalten erklären?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage