为何虚拟地址在编写程序时,已经固定了

为什么虚拟地址在编写程序时,已经固定了
为什么虚拟地址在编写程序时,已经固定了

内存地址不是在程序动态运行时,才能确定吗?
最近看《程序员的自我修养》,关于这个问题不太清楚

------解决方案--------------------
偏移在编译时就确定了,基址会在链接时候确定,而动态库之类的会多一个从定位表,如果没有加载到编译后的基址,那么用重定位表修改里面包含的地址,而exe程序是不可能被其他东西所占用的,所以exe在每台机器上运行,指令地址都是相同的(基址+偏移都一样)