在谈对地址空间的理解之前先看这样一个问题:
首先我们在vim中创建这样一组代码。
主函数上定义全局变量num,并赋值为1。
之后在主函数内由 fork() 函数创建出子进程。
在父子进程中各自轮换打印出num值和num地址
结果如下:
由上图可知父子进程中的num值是相等的,并且num的地址且相同。
现在原代码中的父进程逻辑中将num的值更改为2,其他部分都不做改动。
结果如下:
在这里我们惊奇的发现在父子进程中,num的地址相同,但是值却不同!!!
这也就意味着我们从同一块地址中读出来不同的值 ???这貌似十分不合理