在 Linux 中,mremap 函数用于重新映射使用 mmap 映射的内存。请帮我澄清以下问题:
- 如果mremap函数失败,旧的映射内存的状态是什么?
- 如果mremap函数失败了,还需要调用munmap函数吗?
- 如果mremap函数成功,重映射的内存中是否还有以前的数据?
mremap 尝试就地增加分配,但如果无法增加当前区域的大小,则会回退到分配新区域。
mremap() 扩展(或缩小)现有内存映射,可能同时移动它(由 flags 参数和可用虚拟地址空间控制)。src http://linux.die.net/man/2/mremap
如果 mremap 失败,旧内存就可以了(就像 realloc 一样)。
如果 mremap 失败,则没有任何内容可以 munmap (来自this至少打电话)。参见第 1 项。
如果 mremap 成功并且必须移动,旧内存将被复制到新内存中(并且旧内存会为您进行 munmap'ped)。如果 mremap 能够就地增加大小,则不会移动内存,也不会创建新的分配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)