在我们以前学习C语言的过程中,我们总听过什么堆区、栈区之类的,但是事实上,我们编程时所说的地址并不是内存地址。.
在Linux中进程地址空间的布局图如下图所示
我们可以在Linux中验证一下
可以发现堆地址是从低地址往高地址增长的,栈地址是从高地址往低地址增长的
但是,这个地址并不是内存的中的地址
可以发现父进程和子进程中a的地址是一样的,但是打印出来的a的值确实不一样,如果这个地址是物理地址是绝对不肯能出现这种情况的。
所以我们所看到的地址的相对地址,通过页表将内存地址和进程地址联系起来,这样不仅可以保护内存,还能用一种统一的方式管理进程