-5
當我做這個C++堆指針奇怪的事情?
int* pointer = new int; int* pointer2 = new int;
我想這兩個指針是在我的電腦的內存彼此相鄰(他們是4個字節分開),因此從理論上講這兩個指針應該有差異4,但是當我顯示指針它表明這樣的:
0x6000227e0 0x600022800
其是2的差,使得意味着INT是2個字節長?我的邏輯錯了嗎?
當我做這個C++堆指針奇怪的事情?
int* pointer = new int; int* pointer2 = new int;
我想這兩個指針是在我的電腦的內存彼此相鄰(他們是4個字節分開),因此從理論上講這兩個指針應該有差異4,但是當我顯示指針它表明這樣的:
0x6000227e0 0x600022800
其是2的差,使得意味着INT是2個字節長?我的邏輯錯了嗎?
不,這是32個字節的差異,而不是兩個字節。差異是十六進制的0x20
,或十進制的32。
此外,您甚至不能保證對象將在內存中連續分配。
換句話說,這些內存地址完全沒有任何意義。
這是真正的感謝! – gigi
排除對齊,這些如何實際上有'2'的差異? –
他們有一個0x20的差異,或者是十進制的32,所以中間有很多「空間」。 –