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



此代码例如:

int x = 75;
int *p = &x;
printf("%llxn",p);

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

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

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

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

这不是偏移。

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

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

它是一个虚拟地址,是一个虚页码,也是从页面开始的偏移量。翻译机制在进程的页表中查找以确定相应的物理页码,并将其与偏移量组合以得出物理地址。

相关内容

  • 没有找到相关文章

最新更新