2016-07-23 7 views
-5

, wenn ich dies tunC++ Heap-Zeiger seltsame Sache? einen Unterschied

int* pointer = new int; 
    int* pointer2 = new int; 

Ich nehme diese beiden Zeiger zueinander in dem Speicher meines Computers nächsten sind (sie sind auseinander 4 Bytes), so dass die beiden Zeiger in der Theorie sollte aber von 4, wenn ich die Zeiger zeigen, zeigt es dies:

0x6000227e0 
0x600022800 

die eine Differenz von 2 ist, so bedeutet das, dass int sind 2 Bytes lang? Ist meine Logik falsch?

+1

Ausrichtung beiseite, wie diese tatsächlich einen Unterschied von '2' haben? –

+1

Sie haben einen Unterschied von 0x20 oder, in Dezimal, 32. so gibt es viel "Raum" dazwischen. –

Antwort

4

Nein, das ist ein Unterschied von 32 Bytes, nicht zwei Bytes. Der Unterschied ist 0x20 in Hexadezimal oder 32 in Dezimal.

Darüber hinaus ist nicht einmal garantiert, dass die Objekte fortlaufend im Speicher zugewiesen werden.

Mit anderen Worten, diese Speicheradressen bedeuten absolut nichts, was auch immer.

+0

das ist wahr danke !! – gigi