在64位计算机中分配32位整数数组

Shr*_*roy 1 c++ memory-management

我有一台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 ()
Run Code Online (Sandbox Code Playgroud)

输出是:

0018FA04        0018FA10
Run Code Online (Sandbox Code Playgroud)

它们似乎比它们应该更加分开.为什么不是地址04和07?这是否意味着系统实际上分配了四个(或更多)整数,而不是将四个32位整数打包成两个64位寄存器?

在此先感谢您的帮助.

Jer*_*fin 9

每个int是32位(4字节).其中3个产生12个字节.0x0018FA10 - 0x0018FA04 = 12.