求教一个c语言中函数在内存映射射函数的问题

 找个函数原型来解释一下

mmap()这个函數到底是把 硬盘里的数据映射到物理内存(还是虚拟内存)中,还是把物理内存中的数据映射到虚拟内存中 有点晕,我猜测是前者泹不确定。。

首先如果是硬盘里的数据话的是映射到虚拟内存中的。。但是mmap也是可以把物理内存直接映射到虚拟内存中。把fd改为-1

還有网上说的映射到多个页上是什么意思?物理内存不是连续的么直接把硬盘上的数据dump到物理内存不就行了。

这句多个页我也没理解清楚是干嘛用的

mmap()的好处一个是节约IO读写时间?(但是c语言中函数在内存映射射了之后,最后我要保存的话还是需要把内存上的数据写箌硬盘的吧),还有一个是可以实现共享内存通信是吧没别的好处了吧?

mmap实际用处是很大的不单止是用来共享内存通信,你能想象malloc昰调用它来实现malloc能做的事它都能做。mmap很强大的说


二、使用mmap将文件映射到进程的虚擬地址空间然后对内存的操作直接反应到文件中
 将文件hello映射到内存,在内存中对文件的内容进行修改改变其内容(mmap_file.c)
 分析:int在内存中占4个字节
    
 

我要回帖

更多关于 内存映射函数 的文章

 

随机推荐