欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實(shí)現(xiàn)大數(shù)據(jù)文件的內(nèi)存映射機(jī)制

 更新時(shí)間:2017年01月03日 10:50:31   投稿:lqh  
這篇文章主要介紹了C語言實(shí)現(xiàn)大數(shù)據(jù)文件的內(nèi)存映射機(jī)制的相關(guān)資料,需要的朋友可以參考下

C語言實(shí)現(xiàn)大數(shù)據(jù)文件的內(nèi)存映射機(jī)制

摘要

本文主要講述大量數(shù)據(jù)的文件的內(nèi)存映射機(jī)制的實(shí)現(xiàn)。

1. 內(nèi)存映射

內(nèi)存映射文件,是由一個(gè)文件到一塊內(nèi)存的映射。Win32提供了允許應(yīng)用程序把文件映射到一個(gè)進(jìn)程的函數(shù) (CreateFileMapping)。內(nèi)存映射文件與虛擬內(nèi)存有些類似,通過內(nèi)存映射文件可以保留一個(gè)地址空間的區(qū)域,同時(shí)將物理存儲器提交給此區(qū)域,內(nèi)存文件映射的物理存儲器來自一個(gè)已經(jīng)存在于磁盤上的文件,而且在對該文件進(jìn)行操作之前必須首先對文件進(jìn)行映射。使用內(nèi)存映射文件處理存儲于磁盤上的文件時(shí),將不必再對文件執(zhí)行I/O操作,使得內(nèi)存映射文件在處理大數(shù)據(jù)量的文件時(shí)能起到相當(dāng)重要的作用。

2. 實(shí)現(xiàn)

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

相關(guān)文章

  • c++只保留float型的小數(shù)點(diǎn)后兩位問題

    c++只保留float型的小數(shù)點(diǎn)后兩位問題

    這篇文章主要介紹了c++只保留float型的小數(shù)點(diǎn)后兩位問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言的數(shù)據(jù)結(jié)構(gòu)之樹、森連、二叉樹之間的轉(zhuǎn)換圖解

    C語言的數(shù)據(jù)結(jié)構(gòu)之樹、森連、二叉樹之間的轉(zhuǎn)換圖解

    這篇文章主要介紹了C語言的數(shù)據(jù)結(jié)構(gòu)之樹、森連、二叉樹之間的轉(zhuǎn)換詳解,數(shù)據(jù)是信息的載體,是描述客觀事物屬性的數(shù)、字符以及所有能輸入到計(jì)算機(jī)中并被程序識別和處理的符號的集合,需要的朋友可以參考下
    2023-07-07
  • 詳解C++編程中斷言static_assert的使用

    詳解C++編程中斷言static_assert的使用

    這篇文章主要介紹了C++編程中斷言static_assert的使用,斷言在debug時(shí)非常有用,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-01-01
  • C語言實(shí)現(xiàn)自動(dòng)給QQ好友發(fā)窗口抖動(dòng)

    C語言實(shí)現(xiàn)自動(dòng)給QQ好友發(fā)窗口抖動(dòng)

    這篇文章主要介紹了C語言實(shí)現(xiàn)自動(dòng)給QQ好友發(fā)窗口抖動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C++11中std::async的使用詳解

    C++11中std::async的使用詳解

    這篇文章主要介紹了C++11中std::async的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C語言常見排序算法歸并排序

    C語言常見排序算法歸并排序

    這篇文章主要介紹了C語言常見排序算法歸并排序,歸并排序是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法的一個(gè)非常典型的應(yīng)用
    2022-07-07
  • C++ 實(shí)現(xiàn)稀疏矩陣的壓縮存儲的實(shí)例

    C++ 實(shí)現(xiàn)稀疏矩陣的壓縮存儲的實(shí)例

    這篇文章主要介紹了C++ 實(shí)現(xiàn)稀疏矩陣的壓縮存儲的實(shí)例的相關(guān)資料,M*N的矩陣,矩陣中有效值的個(gè)數(shù)遠(yuǎn)小于無效值的個(gè)數(shù),且這些數(shù)據(jù)的分布沒有規(guī)律,需要的朋友可以參考下
    2017-07-07
  • C++?STL標(biāo)準(zhǔn)庫std::vector擴(kuò)容時(shí)進(jìn)行深復(fù)制原因詳解

    C++?STL標(biāo)準(zhǔn)庫std::vector擴(kuò)容時(shí)進(jìn)行深復(fù)制原因詳解

    我們知道,std::vector之所以可以動(dòng)態(tài)擴(kuò)容,同時(shí)還可以保持順序存儲,主要取決于其擴(kuò)容復(fù)制的機(jī)制。當(dāng)容量滿時(shí),會重新劃分一片更大的內(nèi)存區(qū)域,然后將所有的元素拷貝過去
    2022-08-08
  • 詳解C++中常用的四種類型轉(zhuǎn)換方式

    詳解C++中常用的四種類型轉(zhuǎn)換方式

    這篇文章主要為大家詳細(xì)介紹了C++中常用的四種類型轉(zhuǎn)換方式:static_cast<Type>、dynamic_cast<Type>、const_case<Type>和reinterpret_cast,感興趣的可以了解一下
    2022-08-08
  • C++11中l(wèi)onglong超長整型和nullptr初始化空指針

    C++11中l(wèi)onglong超長整型和nullptr初始化空指針

    本文介紹?C++11?標(biāo)準(zhǔn)中新添加的?long?long?超長整型和?nullptr?初始化空指針,在?C++11?標(biāo)準(zhǔn)下,相比?NULL?和?0,使用?nullptr?初始化空指針可以令我們編寫的程序更加健壯,本文結(jié)合示例代碼給大家詳細(xì)講解,需要的朋友跟隨小編一起看看吧
    2022-12-12

最新評論