据我所知,线程确实共享堆内存,但是不同的进程也可以共享一个堆,默认情况下会发生吗?
如果没有,当一个人使用malloc,并且直到堆内存耗尽时,malloc操作是否只是返回堆中的下一个内存块?因为它显然没有分配,因为只有一个进程可以访问堆, 例如,假设堆内存中包含1-10个地址, 第一个malloc调用(3个字节)不需要搜索任何空闲内存它只分配1-3个地址并返回地址1,现在第二个调用也不需要寻找空闲空间它只返回地址4,依此类推.. 所以直到内存耗尽malloc刚刚返回下一块内存的地址时,它不需要寻找免费的未分配内存。
真的发生了什么事吗?
答案 0 :(得分:1)
每个进程都有一个唯一的内存映射(虚拟到物理内存映射)。因此,两个不同进程中的相同地址通常会遇到不同的物理内存。当您专门为共享映射内存等时,存在这些异常