【问题标题】:Does a C pointer refer to the physical or virtual address [duplicate]C指针是指物理地址还是虚拟地址[重复]
【发布时间】:2014-10-27 10:44:37
【问题描述】:

当我在 C 语言中为 PC 程序使用指针时,它是指向变量的物理地址还是虚拟地址?

int x = 10;
int* ptr = &x;

【问题讨论】:

  • 通常在大多数操作系统情况下(Windows、Linux、MAC)到虚拟内存,然后 MMU 将其映射到真实的物理地址。

标签: c pointers


【解决方案1】:

视情况而定。

如果您正在编写一个将在操作系统之上运行的应用程序,即在用户模式下并且操作系统使用虚拟内存,那么它将指向一个虚拟地址(或者更确切地说,它将指向一个物理地址,但与实际使用的物理地址不同)。

如果您使用的操作系统没有虚拟内存,或者您正在编写(部分)内核代码,它将指向物理地址。

【讨论】:

    【解决方案2】:

    这取决于您的操作系统!

    在 Windows 和 Linux 中,它是典型的虚拟内存!此外,用户空间应用程序无法使用物理地址访问内存。

    【讨论】:

      【解决方案3】:

      如果存在 底层操作系统(不考虑嵌入式系统),并且它不是特殊类型的低级应用程序(驱动程序、堆栈),则地址将始终是虚拟的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-11
        • 2011-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多