所以,我知道如果你需要一些动态分配的内存,你可以使用malloc().例如,您的程序将可变长度文件读入char [].您事先并不知道制作阵列有多大,因此您需要在运行时分配内存.
我想知道你何时使用mmap().我已经阅读了手册页,说实话,我不明白用例是什么.
有人可以用简单的术语向我解释一个用例吗?提前致谢.
Gre*_*sev 35
mmap
可用于一些事情.首先,文件支持的映射.malloc
您可以将整个文件映射到内存中而无需显式读取,而不是使用内存和读取文件来分配内存.现在,当您从该内存区域读取(或写入)时,操作会透明地对文件执行操作.你为什么想做这个?它允许您使用OS提供的分页机制轻松处理大于可用内存的文件.即使对于较小的文件,mmapping也会减少内存副本的数量.
mmap
也可以用于匿名映射.此映射不由文件支持,基本上是对一块内存的请求.如果这听起来很相似malloc
,那你就是对的.事实上,大多数实现malloc
将在内部使用匿名mmap
来提供大的内存区域.
另一个常见用例是让多个进程将同一文件映射为共享映射以获取共享内存区域.该文件不必实际写入磁盘. shm_open
是实现这一目标的便捷方式.
归档时间: |
|
查看次数: |
8468 次 |
最近记录: |