关于汇编中物理地址的有关问题

关于汇编中物理地址的问题
小弟在看王爽的汇编语言的时候,有个疑惑。就是用段地址*16+偏移地址得出物理地址后,那个物理地址就是数据在内存中的位置吗?我看都是20位的物理地址,因为有20位地址总线,比如10000H。但我用
#include <iostream>
using namespace std;

int main()
{
    int p = 1;
    cout << &p << endl;
    return 0; 

输出1所在的位置时,结果为0X22ff44,和上面物理地址的形式差别很大呀,不解中。。。我原本以为也是5位16进制数的。为什么呢
------解决方案--------------------
intel cpu编程时 有3类地址概念

虚拟地址:例如汇编中的cs:0000之类的,在16为系统是20位地址,应用程序和内核都可以使用

物理地址:内存的实际地址(可能表达不准确),就是硬件连接ram时,ram的地址有可能是ram的选择线与cpu的地址线30连接,那么ram的地址就从0x40000000

线性地址:就是把地址从0~ram大小表示,应用程序和内核使用起来方便

虚拟地址和线性地址,应用程序用哪种,是由os确定的。确定的是linux让应用程序使用线性地址,windows不确定
------解决方案--------------------
lz的理解是错误的,不是物理地址