C ++内存映射文件

时间:2017-12-20 18:00:12

标签: c++ file mmap

我想将内存映射文件用于我只读过一次的数据。目前我正在使用:

FILE * f = fopen("data.dat", "rb");

fseek(f, 0L, SEEK_END);
size_t fileSize = ftell(f);
fseek(f, 0L, SEEK_SET);

char * buffer = new char[fileSize];
fread(buffer, sizeof(char), fileSize, f);
fclose(f);

//operate with buffer
for (size_t i = 0; i < fileSize; i++){ 
  //...
}

我想使用mmap并直接在映射缓冲区上运行。但是,我在Apple文档中发现mmap存在:

  

在以下情况下不应使用文件映射:

     
      
  • 您只想从头到尾依次读取文件一次。
  •   

为什么呢?如果我使用fread则会有更多“逻辑”,而且我正在创建新数组,这也不是免费的。

0 个答案:

没有答案