關於檔案在記憶體中讀寫的問題

2021-06-25 18:02:02 字數 556 閱讀 4999

這兩天遇到乙個算不上bug的問題,主要涉及到檔案的讀寫。

資料庫表中有大量資料,可能不停的寫入資料,又要從該表中讀取未讀取的資料,所以每次從表中讀取完資料,將最後一條資料的id寫入到乙個檔案中,這樣下次讀取資料不需要從表的開頭讀取,可以永久的儲存記錄。下面是乙個測試程式:

int count = 0;

while(1)

這段**正常,但是在執行的過程中如果你忽然終止,index_file檔案中什麼都沒有,很奇怪啊。

正常寫入後,也fclose了,按常理說也是正確的。

但是在fclose(fp);後面加一句sleep(2);

你在執行的過程中隨便終止,就能看到了index_file檔案中的內容了。

一直不理解為啥。慢慢的想想,

根據我自己的理解:

檔案寫,把檔案從硬碟中讀取到記憶體中,然後寫入內容,再把內容儲存到硬碟中,肯定花了不少時間,

比直接在記憶體中操作變數要時間久一點 。當你終止程式的時候,可能fclose還沒完成,導致檔案關閉不正常。當你sleep後,fclose正常。

如果理解不正確,還請指正!

在記憶體中讀寫資料

from io import stringio 建立 io.stringio記憶體緩衝器物件f f stringio 往f中寫入字串資料,並返回字串的長度 f.write hello 結果 5 f.write 結果 1 f.write world 結果 6 提取物件f中的全部內容 f.getvalu...

目錄瀏覽及大檔案在記憶體中的讀寫

通過乙個mfc例項,將硬碟中的某個檔案拷貝到另乙個目標目錄中,並用進度條顯示拷貝進度。通過該例項熟悉以下3個應用 一是目錄瀏覽視窗的使用 二是大型檔案 佔上百兆 的讀寫及傳輸 三是精確顯示操作進度百分比。1 建立乙個對話方塊類cfilecopydlg及對話方塊,在上面顯示三個按鈕,分別是原始檔瀏覽 ...

關於String在記憶體中的存放

string s1 abc 這個字串s1被賦予了值 abc 首先,查詢stringpool中有沒有 abc 這個值,如果不存在,那麼就將其存進去,如果已經存在,那麼就會被s1所呼叫。string s1 abc string s2 abc s1和s2所指向的物件是同乙個,以下 能夠看出來 system...