虚拟地址和物理地址之间的区别?

时间:2014-02-16 04:49:42

标签: memory-address virtual-address-space

请根据以下示例解释虚拟地址和物理地址之间的区别。请解释这里专门使用的地址以及如何在同一个地方使用其他地址。 另外,如何才能区分这两者。

代码:

if(fork()==0)
 {
   a=a+5;
   printf("%d%d", a, &a);
 }
else
 {
   a=a-5;
   printf("%d%d", a, &a);
 }

&a在两个陈述中引用了什么地址?

1 个答案:

答案 0 :(得分:0)

& a如果你在if&中独立声明变量a,可以引用两个不同的地址。其他块。

但如果变量a在“if”之上声明,那么在任何一种情况下,变量“a”将具有相同的物理地址,可由& a访问。

当您从“a”中添加或减去值时,您正在更改存储在存储“a”的内存中的内容,表示a的值,而不是地址。

在您的情况下,您不会改变a的地址,因为它是物理地址。

如果你真的想玩地址,那么指针指向

 *p = &a;
 p+=5;
 p-=5;

通过这种方式,您可以前进五个内存块。向后(一个块大小取决于内存中变量“a”的类型)。

有关虚拟地址的更多信息:refer here

希望有所帮助。