gpt4 book ai didi

c - 你什么时候使用mmap

转载 作者:太空狗 更新时间:2023-10-29 16:25:09 27 4
gpt4 key购买 nike

所以,我明白如果你需要一些动态分配的内存,你可以使用 malloc()。例如,您的程序将可变长度文件读入 char[]。你事先不知道你的数组有多大,所以你在运行时分配内存。

我想了解您何时会使用 mmap()。我已阅读手册页,老实说,我不明白用例是什么。

有人可以用简单的术语向我解释一个用例吗?提前致谢。

最佳答案

mmap 可以用于一些事情。首先,文件支持的映射。您无需使用 malloc 分配内存并读取文件,而是将整个文件映射到内存中,而无需显式读取它。现在,当您从该内存区域读取(或写入)时,操作将透明地作用于文件。你为什么想做这个?它使您可以使用操作系统提供的分页机制轻松处理大于可用内存的文件。即使对于较小的文件,mmapping 也会减少内存副本的数量。

mmap 也可以用于匿名映射。此映射不受文件支持,基本上是对内存块的请求。如果这听起来类似于 malloc,那么您是对的。事实上,大多数 malloc 的实现都会在内部使用一个匿名的 mmap 来提供一个大的内存区域。

另一个常见的用例是让多个进程映射同一个文件作为共享映射以获得共享内存区域。该文件不必实际写入磁盘。 shm_open 是实现这一目标的便捷方式。

关于c - 你什么时候使用mmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12095241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com