c ++堆指针奇怪的是什么?

时间:2016-07-23 01:07:07

标签: c++ pointers

当我这样做时

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

我认为这两个指针在我的计算机内存中彼此相邻(它们相距4个字节)所以理论上两个指针的差异应该是4,但是当我显示指针时它会显示:

0x6000227e0
0x600022800

这是2的差异,这意味着int是2个字节长?我的逻辑错了吗?

1 个答案:

答案 0 :(得分:4)

不,这是32个字节的差异,而不是两个字节。差异是十六进制的0x20或十进制的32。

此外,您甚至不能保证在内存中连续分配对象。

换句话说,这些内存地址绝对没有任何意义。