加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

c – 使用fork时如何映射内存?

发布时间:2020-12-13 18:55:09 所属栏目:Linux 来源:网络整理
导读:我是“fork()”的新手,我随处读到,当调用fork()时,启动当前(调用)进程的精确副本.现在,当我运行以下代码时,应该有两个不同的进程,有两个不同的分配给其变量和函数的内存位置. #include Why The output looks like:: child address::804a01c parent address::

我是“fork()”的新手,我随处读到,当调用fork()时,启动当前(调用)进程的精确副本.现在,当我运行以下代码时,应该有两个不同的进程,有两个不同的分配给其变量和函数的内存位置.

#include
Why The output looks like:: 
child address::804a01c 
parent address::804a01c

为什么父母和孩子的地址都是一样的?

最佳答案

having two different memory locations assigned to their vars and functions.

不; Linux实现了virtual memory,这意味着每个进程都有自己的完整地址空间.因此,在fork之后,两个进程都会看到内存对象副本的相同地址.

(顺便说一下:VM还会导致代码在物理内存中的进程之间共享,并且所有数据都只是copied-on-write.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读