我有一台 64 位 i7 机器。假设我为 n 个 32 位整数分配内存。分配中实际使用了多少物理寄存器:n 还是 n/2?
我尝试编写以下简单程序来找出答案。
#include <iostream>
#include <cstdlib>
using namespace std;
int main (int argc, char *argv[]) {
int a[4];
cout << &a[0] << "\t" << &a[3] << endl;
cin.ignore (1);
return 0;
} // End main ()
输出是:
0018FA04 0018FA10
他们似乎比他们应该的距离更远。为什么地址不是 04 和 07?这是否意味着系统实际上分配了四个(或更多)整数,而不是将四个 32 位整数打包到两个 64 位寄存器中?
在此先感谢您的帮助。