国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言實現大數據文件的內存映射機制

2020-01-26 14:18:58
字體:
來源:轉載
供稿:網友

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; } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 罗定市| 轮台县| 金塔县| 香格里拉县| 岐山县| 青海省| 保德县| 胶州市| 呈贡县| 松阳县| 红桥区| 金寨县| 长顺县| 定边县| 郯城县| 新宾| 定州市| 昭苏县| 呼图壁县| 盘山县| 南宁市| 枣庄市| 安福县| 齐齐哈尔市| 五莲县| 恩平市| 海丰县| 新巴尔虎右旗| 衡阳县| 玉山县| 晋城| 梁河县| 武夷山市| 明星| 巨野县| 长汀县| 大新县| 社旗县| 铜山县| 五台县| 西乌|