我正在編寫一個程序,需要遍歷一個大的40GB二進制文件,但我只有16GB的物理RAM。一位朋友告訴我,我可以使用文件映射來解決這個問題。我瞭解如何create a file mapping和reading into a file map handle以及文件映射如何將永久內存中文件的部分映射到不同的虛擬內存塊以供讀取。文件映射如何工作
因此,如果我正確理解這一點,我可以創建一個說10gb的緩衝區,並將第一個10gb的文件讀入此緩衝區。但是當我必須讀取文件上的10gb標記時,操作系統是否會自動爲我獲取另一個塊,還是必須在我的代碼中手動執行此操作?
好的。我正在構建一個64位程序。因此,如果我的理解正確,我可以在整個40GB空間中使用MapViewOfFile,並且操作系統將處理讀取和寫入操作? –
理論上,是的。我無法保證MapViewOfFile能夠成功處理大量的請求,但值得一試。我正在假設您正在閱讀現有的大文件。如果您嘗試創建一個,那麼您可能會受到分頁文件大小的限制。 –