没有合适的资源?快使用搜索试试~ 我知道了~
C++中使用内存映射文件处理大文件
需积分: 5 1 下载量 48 浏览量
2023-10-22
20:49:52
上传
评论
收藏 44KB DOC 举报
温馨提示
试读
9页
文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大多数 场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。目前,对 于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。
资源推荐
资源详情
资源评论
C++中使用内存映射文件处理大文件
引言
文件操作是应用程序最为基本的功能之一,Win32 API 和 MFC 均提供有支
持文件处理的函数和类,常用的有 Win32 API 的 CreateFile()、WriteFile()、
ReadFile()和 MFC 提供的 CFile 类等。一般来说,以上这些函数可以满足大多
数 场合的要求,但是对于某些特殊应用领域所需要的动辄几十 GB、几百 GB、
乃至几 TB 的海量存储,再以通常的文件处理方法进行处理显然是行不通的。目
前,对 于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,
本文下面将针对这种 Windows 核心编程技术展开讨论。
内存映射文件
内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空
间的区域,同时将物理存储器提交给此区域,只是内存文件映射的物理存储器来
自一个已经存在于磁盘上的文件,而非系统的页文件,而且在对该文件进行操作
之前必须首先对文件进行映射,就如同将整个文件从磁盘加载到内存。由此可以
看出,使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行 I/O
操作,这意味着在对文件进行处理时将不必再为文件申请并分配缓存,所有的文
件缓存操作均 由系统直接管理,由于取消了将文件数据加载到内存、数据从内
存到文件的回写以及释放内存块等步骤,使得内存映射文件在处理大数据量的文
件时能起到相当重要的作用。另外,实际工程中的系统往往需要在多个进程之间
共享数据,如果数据量小,处理方法是灵活多变的,如果共享数据容量巨大,那
么就需要借助于内存映射文件来进行。实际上,内存映射文件正是解决本地多个
进程间数据共享的最有效方法。
内存映射文件并不是简单的文件 I/O 操作,实际用到 了 Windows 的核心
编程技术--内存管理。所以,如果想对内存映射文件有更深刻的认识,必须对
Windows 操作系统的内存管理机制有清楚的认识,内存管理的相关知识非常复
资源评论
spvm2000
- 粉丝: 2
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功