分叉 - 相同的内存地址?

2024-02-09

这是关于 Linux 中的 C 语言。

I have fork() in main()我在其中创建了 2 个子进程。然后,在两个子进程中运行该函数abc(),其中有一个局部变量x。我在里面写了一些值。然后我打印这个变量的地址printf("%p",&x).

两个进程打印相同的地址。我认为每个孩子都会获得父母记忆的(独立)副本。我需要每个进程都有自己的变量x。我该怎么做或者我做错了什么?


您需要了解物理内存和进程的虚拟地址空间之间存在脱节。

每个流程都有它的作用own4G 虚拟地址空间,操作系统和硬件内存管理器的工作是将虚拟地址映射到物理地址。

所以,虽然可能seem两个进程具有相同的变量地址,这只是virtual地址。

The memory manager will map that to a totally different physical addressa.

这种映射还允许您运行 10 个进程,每个进程占用 1G,即使您的机器只有 4G 物理内存。操作系统可以将内存的一些部分交换到磁盘上,并在您尝试使用它们时将它们带回磁盘。


a: Mostly, this is true. It may map to the same physical address if you're sharing stuff between processes. For example, shared memory, kernel code and data, dynamic libraries and so forth.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分叉 - 相同的内存地址? 的相关文章

随机推荐

  • 使用截然不同的需要了解的信息集对产品进行建模并将它们链接到订单项?

    我目前正在一个网站上工作 该网站销售各种类型的定制产品 我已经得到了通用的标准购物车模式 订单有许多 LineItems LineItems 有一个产品 但我遇到了一些症结 假设我们的一个产品是一个球 而我们的一个产品是一盒蜡笔 当人们创建
  • 返回类型与 Object.getClass() 不兼容

    该代码是在 eclipse 上导入 webservice 文件时生成的 但是 我在编译时看到了这个错误 返回类型与Object getClass 有什么想法可以解决这个问题吗 public java lang String getClass
  • Firestore 模拟器 REST API 身份验证

    我正在寻找 Firestore 模拟器 REST API 处理未经身份验证的请求的方式的预期行为的一些确认 因为我认为我可能发现了一些可能的不一致之处 我一直在使用 Postman 的个人项目来使用 Firestore Emulator R
  • 实体框架 6.1 更新记录的子集

    我有一个仅封装的视图模型some数据库模型属性 视图模型包含的这些属性是我想要更新的唯一属性 我希望其他财产能够保持其价值 在我的研究过程中我发现this https stackoverflow com a 15339512 2015959
  • mediaelement.js - 在第一个视频末尾播放另一个视频

    由克罗克 Video forEveryone 推荐 我希望能够在第一个视频结束后自动播放第二个视频 然后在第二个视频结束后显示静态图像 经过一段设定的时间后 循环回到第一个视频 Thanks function audio video med
  • 启动带有视频的 Youtube 应用程序

    我有一个带有 UIButton 的应用程序 我希望 当我单击 iPhone 启动 Youtube 应用程序的按钮时 我的视频可以直接开始播放 我尝试了以下代码 UIApplication sharedApplication openURL
  • 如何查找表中长列的长度

    我在名为 Files 的表中有一个名为 FileSize 的 LONG 列 为了实现这一目标 我做了以下工作 我编写了这个 PL SQL 脚本来查找大小 declare long var LONG 0 begin dbms output p
  • 有状态 Rsocket 应用程序

    在我的项目中 我想让多个客户端连接到一个服务 我正在使用 java Rsocket 实现 该服务应该为每个客户端维护一个状态 现在 我可以通过某种标识符来管理客户端 这个选项我已经实现了 但我不想使用字符串手动管理会话 所以另一个想法是通过
  • 在 C# 中使用委托

    在 C 语言和 NET 框架中 你能帮助我理解委托吗 我试图检查一些代码 发现收到的结果出乎我的意料 这里是 class Program public static int I 0 static Func
  • 为什么元组联合期望“never”作为“.includes()”参数?

    type Word foo bar baz const schema foo foo as const bar bar as const baX bar baz as const const testFn schemaKey keyof t
  • Rails:无效的单表继承类型错误

    因此 我正在努力使用现有数据库迁移这个 php 站点 但我无法将其更改为 Rails 这里有张桌子 Quotes有一列名为type 每当我尝试创建此模型并设置类型时 它都会告诉我以下错误 ActiveRecord SubclassNotFo
  • C++ 中重载赋值运算符

    据我了解 重载operator 时 返回值应该是非常量引用 A A operator const A check for self assignment do assignment return this 在以下情况下允许调用非常量成员函数
  • 使用字符串插值将字符串格式化为列

    我需要打印双精度数 以便为值的字符串表示分配一定数量的符号 例如 8 接下来的单词应该从每个字符串中的字符串开头的相同索引处开始 我现在有 value 0 test value 0 3333333333333 test value 0 5
  • 如果所有给定单词都在字符串中,则匹配正则表达式

    假设我有一个这样的查询 一二三 如果我用 替换空格 管道字符 如果字符串包含一个或多个这些单词 我可以匹配该字符串 这就像逻辑 或 是否有类似的东西可以进行逻辑与 只要字符串中存在所有单词 无论单词顺序如何 它都应该匹配 不幸的是我离开了我
  • 当两个 .c 文件具有相同符号但不同类型的全局变量时,引用如何工作?

    C 假设我有以下 C 模块 MODULE 1 include
  • 自动/机器人消息发布到 Microsoft-Teams 聊天室

    如何自动将消息发布到 Microsoft Teams 中的聊天室 这是针对单向消息传递的 即发布消息 而不是阅读消息 这里的大局是我们正在评估不同的群聊解决方案 其中一项要求是将错误消息从各种服务和程序发布到聊天室 一个明智的方法似乎是建立
  • Django 错误电子邮件太长。我该如何截断它?

    Django 1 9 中的错误电子邮件似乎比以前长得多 有一个完整的 设置 部分 我认为这是多余的 而且可能太暴露了 编辑 Django 发送的错误电子邮件的最佳方法是什么 编辑 我不仅仅是想隐藏敏感信息 Django 1 9 中的电子邮件
  • Repeater 控件中的水平方向

    我有一个 Repeater 控件 用于显示上传的图像 如何水平显示复读机中的图像 我怎样才能将标题添加到图片的底部 假设你有这样的代码
  • 读取 opencv_face.LBPHFaceRecognizer.getHistograms() 中的值

    我正在尝试使用 android 中的 opencv 库 我以前从未研究过它 所以这可能是一个非常基本的问题 我有一个opencv face LBPHFaceRecognizer我的对象识别器活动 我的要求是读取先前存储的面部的直方图值 op
  • 分叉 - 相同的内存地址?

    这是关于 Linux 中的 C 语言 I have fork in main 我在其中创建了 2 个子进程 然后 在两个子进程中运行该函数abc 其中有一个局部变量x 我在里面写了一些值 然后我打印这个变量的地址printf p x 两个进