请根据以下示例解释虚拟地址和物理地址之间的区别。请解释这里专门使用的地址以及如何在同一个地方使用其他地址。 另外,如何才能区分这两者。
代码:
if(fork()==0)
{
a=a+5;
printf("%d%d", a, &a);
}
else
{
a=a-5;
printf("%d%d", a, &a);
}
&a
在两个陈述中引用了什么地址?
答案 0 :(得分:0)
& a如果你在if&中独立声明变量a,可以引用两个不同的地址。其他块。
但如果变量a在“if”之上声明,那么在任何一种情况下,变量“a”将具有相同的物理地址,可由& a访问。
当您从“a”中添加或减去值时,您正在更改存储在存储“a”的内存中的内容,表示a的值,而不是地址。
在您的情况下,您不会改变a的地址,因为它是物理地址。
如果你真的想玩地址,那么指针指向
*p = &a;
p+=5;
p-=5;
通过这种方式,您可以前进五个内存块。向后(一个块大小取决于内存中变量“a”的类型)。
有关虚拟地址的更多信息:refer here
希望有所帮助。