2016-07-23 58 views
-5

當我做這個C++堆指針奇怪的事情?

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

我想這兩個指針是在我的電腦的內存彼此相鄰(他們是4個字節分開),因此從理論上講這兩個指針應該有差異4,但是當我顯示指針它表明這樣的:

0x6000227e0 
0x600022800 

其是2的差,使得意味着INT是2個字節長?我的邏輯錯了嗎?

+1

排除對齊,這些如何實際上有'2'的差異? –

+1

他們有一個0x20的差異,或者是十進制的32,所以中間有很多「空間」。 –

回答

4

不,這是32個字節的差異,而不是兩個字節。差異是十六進制的0x20,或十進制的32。

此外,您甚至不能保證對象將在內存中連續分配。

換句話說,這些內存地址完全沒有任何意義。

+0

這是真正的感謝! – gigi