内存映射文件误解?

时间:2012-03-27 09:07:31

标签: c# .net-4.0 memory-mapped-files

根据Msdn

  

内存映射文件使程序员能够使用极大的工作   文件,因为内存可以同时管理,他们允许   完整,随机访问文件而无需寻求

问题:

Memory Mappe File的整个原理是写/读字节,并按位置和偏移创建视图。

“不需要寻求”是什么意思?

必须知道开始和结束(偏移)才能读取文件。

所以寻求确实存在!

我在这个巨大的字节数组中寻找......

我缺少什么?

3 个答案:

答案 0 :(得分:3)

使用内存映射文件时,您基本上会获得一个指向内存块的指针,并将其作为某种类型的数组进行访问。然后访问文件中的特定位置是基于索引和/或基于偏移的对存储器的访问。操作系统无形地管理所需的搜索。

答案 1 :(得分:2)

MMF具有随机访问权限,而普通文件则存在1个读取或写入的特定点。

使用偏移量(和指针等)与在流中搜索不同。

  

我必须知道开始和结束(偏移)才能读取文件

您没有'读取文件',您访问内存并需要地址,而不是流位置。

答案 2 :(得分:1)

MMF是实际“映射”到虚拟内存空间的文件,因此您可以将其视为与Array相关的(非常通用的比较)。通过访问该文件的来处理非常大的文件时,它很舒服(如果不是说只有可能)解决方案。我想说,可能是,每个视频编辑软件都使用这种技术。别无他法。