第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C++:這種情況使用“內(nèi)存映射文件”合適嗎?

C++:這種情況使用“內(nèi)存映射文件”合適嗎?

犯罪嫌疑人X 2019-04-09 20:23:47
需求從一個(gè)大小為1G左右的txt文檔中查找某個(gè)字符串注:只讀取平臺(tái)Windows小菜的困惑是不是直接將1G大小的文檔直接映射到內(nèi)存中,如果是這樣的話,是不是意味著,將使用1G左右的內(nèi)存?
查看完整描述

2 回答

?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果是Linux的mmap()實(shí)現(xiàn),只讀條件下肯定是怎么都不會(huì)笨到真的分配這么多內(nèi)存的。唯有讀/寫條件下,并且還要用MAP_PRIVATE方式,才會(huì)以copy-on-write機(jī)制在首次修改時(shí)分配內(nèi)存。
這段代碼可以繞過(guò)分區(qū)表等,直接底層讀取硬盤數(shù)據(jù)。你可以看一下在運(yùn)行之前和運(yùn)行當(dāng)中(就是最后卡在pause的時(shí)候),free命令看內(nèi)存余量是沒(méi)變化的。
#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;
}
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-09
?
侃侃無(wú)極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

是的,是會(huì)使用1G的虛擬內(nèi)存(即進(jìn)程的已使用內(nèi)存地址空間會(huì)增加),它會(huì)映射到磁盤上的文件上,并不消耗多少物理內(nèi)存。
Unix-likeonly.
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-09
  • 2 回答
  • 0 關(guān)注
  • 388 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)