C语言 可以多个进程共享其堆内存



据我所知,线程确实共享堆内存,但是不同的进程也可以共享一个堆吗,默认情况下会发生这种情况吗?

如果没有,当一个人使用 malloc 时,直到堆内存耗尽,malloc 操作是否只是返回堆中的下一个内存块? 因为它显然没有分配,因为只有一个进程可以访问堆,例如,假设堆内存包含 1-10 个地址,第一个 malloc 调用(3 个字节)不需要搜索任何可用内存,它只需分配 1-3 个地址并返回地址 1,现在第二个调用也不需要查找可用空间,它只是返回地址 4,依此类推。因此,在内存耗尽之前,malloc 只是返回下一个内存块的地址,它不需要查找空闲的未分配内存。

这是真的发生了什么吗?

每个进程都有一个唯一的内存映射(虚拟到物理内存映射)。因此,两个不同进程中的相同地址通常会命中不同的物理内存。当您专门映射要共享的内存等时,存在例外情况。

相关内容

  • 没有找到相关文章

最新更新