关于Fork和Malloc的思考

网友投稿 1126 2022-09-25

关于Fork和Malloc的思考

关于Fork和Malloc的思考

有人问我,在父进程中Malloc的内存空间,如果fork()后,到了子进程中,会不会在copy一份出来?还是共用一个空间?看程序:

执行结果:

[zyx@ymserver src]$ ../bin/t1     p=0x8ea0008 cccchild p=0x8ea0008 ccc3333father p=0x8ea0008 ccc444[zyx@ymserver src]$ child p=0x8ea0008 ccc3333

最开始,内存块的值是ccc,地址为0x8ea0008

后来,先执行子进程的                strcpy(p, "ccc3333"); 发现,内存值变成了ccc3333

再父进程                strcpy(p, "ccc444"); 发现,内存值变成了ccc444

那么是不是子进程的值被改变了呢?不是,看最后,子进程读取的内存值还是ccc3333,就可以知道,父子进程各有一片空间。

那么为什么p的地址都是一个地方呢?那是因为这个地址是一个虚拟的地址,每个进程都拥有自己的虚拟地址空间,不同进程的相同地址空间其实在物理上是不同的地址块!

注:上面的程序没有加上错误判断,测试程序而已,不用加了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:裂变营销方案,裂变营销成功案例!
下一篇:Shell 编程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~