需求从一个大小为1G左右的txt文档中查找某个字符串注:只读取平台Windows小菜的困惑是不是直接将1G大小的文档直接映射到内存中,如果是这样的话,是不是意味着,将使用1G左右的内存?
2 回答
波斯汪
TA贡献1811条经验 获得超4个赞
如果是Linux的mmap()实现,只读条件下肯定是怎么都不会笨到真的分配这么多内存的。唯有读/写条件下,并且还要用MAP_PRIVATE方式,才会以copy-on-write机制在首次修改时分配内存。这段代码可以绕过分区表等,直接底层读取硬盘数据。你可以看一下在运行之前和运行当中(就是最后卡在pause的时候),free命令看内存余量是没变化的。#include #include #include #include #include #include intmain(void){intfd;unsignedchar*phdd;inti;fd=open("/dev/sdb",O_RDONLY);phdd=mmap(NULL,1024UL*1024*1024,PROT_READ,MAP_SHARED,fd,0);for(i=0;i<1024;i++){putchar(*(phdd+i));}system("sleep60");return0;}
添加回答
举报
0/150
提交
取消