在 Visual Studio 中查看内存地址时,我注意到排列会根据查看内存的方式而变化。示例:
int a = 3;
int* b = &a;
1 字节:0x 03 00 00 00
2字节:0x 0003
4字节:0x 00000003
现在像这样的小数目,也没什么大不了的。但当查看更多数字时...
int a = 1012346589;
int* b = &a;
1 字节:0x dd 2e 57 3c
2 字节:0x 2edd 3c57
4字节:0x 3c572edd
到处都是这样的情况,这真的让我很困惑,因为我的直觉假设是这样的,这与我使用过的其他工具是一致的:
1 字节:0x 00 00 00 03
2字节:0x 0003
4字节:0x 00000003
或
1字节:0x 3c 57 2e dd
2 字节:0x 3c57 2edd
4字节:0x 3c572edd
我使用过其他内存调试工具,这是我第一次看到它以这种方式排列。这只是视觉工作室的一个怪癖,是一个设置吗?
起初,我认为 1 字节视图可能隐藏了前 3 个字节,因为它们是 0,但在使用更大的数字进行测试后,我发现情况并非如此,并且不同的视图有时会产生完全不同的排列。
正如 Hans Passant 所说,你的处理器是小端的。这是其设计的一个非常基本的属性,你最好习惯它。