我想将内存映射文件用于我只读过一次的数据。目前我正在使用:
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
则会有更多“逻辑”,而且我正在创建新数组,这也不是免费的。