C语言实现大数据文件的内存映射机制
发布时间:2020-12-16 05:15:03 所属栏目:百科 来源:网络整理
导读:C语言实现大数据文件的内存映射机制 摘要 本文主要讲述大量数据的文件的内存映射机制的实现。 1. 内存映射 内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有
C语言实现大数据文件的内存映射机制 摘要 本文主要讲述大量数据的文件的内存映射机制的实现。 1. 内存映射 内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对文件进行映射。使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。 2. 实现 #include "stdafx.h" #include "windows.h" #include <iostream> #include <fstream> using namespace std; int main(int argc,_TCHAR* argv[]){ //// Open the file that we want to map. HANDLE hFile = ::CreateFile(L"C:/Users/Joe WANG/Desktop/Data.txt",GENERIC_READ | GENERIC_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); // Create a file-mapping object for the file. HANDLE hFileMapping = ::CreateFileMapping(hFile,PAGE_WRITECOPY,NULL); // Now map the file PCHAR pbFile = (PCHAR)::MapViewOfFile(hFileMapping,FILE_MAP_COPY,0); // Print result printf("%sn",((string)pbFile).c_str()); // Close all file handle ::UnmapViewOfFile(pbFile); ::CloseHandle(hFileMapping); ::CloseHandle(hFile); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |