C语言实现大数据文件的内存映射机制

Iolanthe ·
更新时间:2024-11-10
· 723 次阅读

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, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // Create a file-mapping object for the file. HANDLE hFileMapping = ::CreateFileMapping(hFile, NULL, PAGE_WRITECOPY, 0, 0, NULL); // Now map the file PCHAR pbFile = (PCHAR)::MapViewOfFile(hFileMapping, FILE_MAP_COPY, 0, 0, 0); // Print result printf("%s\n", ((string)pbFile).c_str()); // Close all file handle ::UnmapViewOfFile(pbFile); ::CloseHandle(hFileMapping); ::CloseHandle(hFile); return 0; } 您可能感兴趣的文章:C语言编程中建立和解除内存映射的方法使用C语言判断栈的方向实例C语言辗转相除法求2个数的最小公约数C语言从txt文件中逐行读入数据存到数组中的实现方法c语言实现把文件中数据读取并存到数组中详解C语言位域的使用与注意事项利用C语言的Cairo图形库绘制太极图实例教程C语言设计一个闪闪的圣诞树使用C语言编写圣诞表白程序C语言实现返回字符串函数的四种方法C语言 栈的表示和实现详细介绍C语言 经典题目螺旋矩阵 实例详解C语言 文件操作解析详解及实例代码



映射 数据 C语言 内存映射 大数据

需要 登录 后方可回复, 如果你还没有账号请 注册新账号