现代x64系统上的指针内部是什么?

此代码例如:

int x = 75;
int *p = &x;

printf("%llxn",p);

写入 64 位数字。我想问的是,这个数字到底是多少?是的,它是一个地址。

但它是存储值 75 的虚拟内存中的绝对地址吗?或者它可能从某个页面标记偏移,或者从程序内存块的“起点”偏移?

如果重要的话,我问的是典型的 x64 英特尔芯片上的 64 位 Windows 10。

回答

是的,它是程序虚拟地址空间中的绝对地址。

它不是偏移量。

在 16 位 Windows 中(30 年前很常见),使用了分段内存模型,其中将指针分段并由 16 位段指针和 16 位偏移量(共 32 位)组成。

但是,32 位和 64 位 Windows 都使用平面内存模型,该模型使用绝对地址。


以上是现代x64系统上的指针内部是什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>