C指针是指物理地址还是虚拟地址

时间:2014-10-27 10:44:37

标签: c pointers

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

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

4 个答案:

答案 0 :(得分:14)

取决于。

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

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

答案 1 :(得分:5)

这取决于您的操作系统!

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

这个问题无关紧要。 如果有虚拟内存管理器,那么你就看不到它,如果没有,那么你也看不到它。