可以有多个进程共享其堆内存吗?

时间:2016-06-13 10:15:34

标签: c memory memory-management malloc

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

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

真的发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

每个进程都有一个唯一的内存映射(虚拟到物理内存映射)。因此,两个不同进程中的相同地址通常会遇到不同的物理内存。当您专门为共享映射内存等时,存在这些异常