【问题标题】:Passing pointer to an array in program args将指针传递给程序 args 中的数组
【发布时间】:2019-06-25 04:40:11
【问题描述】:

假设我们有 2 个用 C 编写的程序,一个程序使用 malloc 分配内存并启动第二个程序,将分配的内存地址和大小作为参数传递。

现在的问题是,第二个程序是否可以将第一个参数转换为指针并读取/写入该内存。为什么,为什么不呢?

为简单起见,假设 Linux 作为底层操作系统。

【问题讨论】:

  • 不,不是以某种形式说明的。两个进程生活在各自的虚拟地址空间中。
  • 做一些关于共享内存的研究。

标签: c memory sharing


【解决方案1】:

不,因为在用户模式下运行的现代操作系统进程请参阅Virtual Memory。相同的虚拟地址将在进程之间转换为不同的物理地址或页面文件位置。

幸运的是,大多数操作系统都具有允许进程间通信的 API,因此您可以研究这些方法。 This question 似乎是一个不错的起点,因为您声称自己在 Linux 上工作。

【讨论】:

    猜你喜欢
    • 2013-02-15
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    相关资源
    最近更新 更多