打印出来的 i 的地址是虚拟地址而不是物理地址(总线地址)。
子进程“继承”父进程的变量,其地址总是一样的,因为在fork时整个虚拟地址空间被复制,但是虚拟地址空间所对应的物理内存却没有复制(这个时候父子进程中变量 i 对应的虚拟地址和物理地址都相同)。等到虚拟地址空间被写时,对应的物理内存空间被复制(这个时候父子进程中变量 i 对应的虚拟地址还是相同的,但是物理地址不同),这就是"写时复制"。
的确是永远一样的,
这个虚拟地址不会变,也决不能变,
你想想,地址要是变了,你那些指针,函数,变量寻址不是全都不能用了?
只是物理地址不一样罢了
http://bbs.chinaunix.net/thread-1987648-1-1.html
--------------------------
有点懂了的样子。 不去纠结地址了。