在Linux中,mremap函数用于重新映射使用mmap映射的内存。请帮我澄清以下内容:
答案 0 :(得分:1)
mremap尝试就地增加分配,但如果不能增加当前区域的大小,则会回退到分配新区域。
mremap()扩展(或缩小)现有的内存映射,可能同时移动它(由flags参数和可用的虚拟地址空间控制)。 src
如果mremap失败,旧内存就好了(就像realloc一样)。
如果mremap失败,那就没有什么可以直接映射(至少来自此调用)。见第1项。
如果mremap成功并且必须移动,则将旧内存复制到新内存(以及旧版本的munmap)。如果mremap能够就地增加大小,则不会移动内存并且不会创建新分配。