簡體   English   中英

c++ fstream 的文件讀/寫是否有 2G 限制?

[英]is there 2G limit for file reading/writing by c++ fstream?

我正在編寫一個 c++ 程序來讀/寫一個大文件(可能大於 60GB)。 通過谷歌搜索問題,似乎在 32 位系統中文件 io 有 2GB 的限制(我使用的是 windows 7 64 位,但我的程序是用 mingw32 編譯的)。 在我的程序中,我一次將 10 個整數寫入文件,所有這些數字都是根據某種算法隨機生成的。 似乎即使文件大小大於 40GB,程序也能運行,但我無法檢查程序讀取的數據是否真的是文件中存儲的數據或一些垃圾數字。 但無論如何,該程序不會報告任何警告或錯誤。 在 32 位程序中真的可以讀/寫大於 60GB 的文件嗎?

Fat32 文件系統對文件大小有限制(我認為最大為 4GB)。 Windows 7 絕對不應該默認使用該文件系統。

同樣在 32 位系統上,文件大小也有限制,您可以使用CreateFileMapping /MapViewOfFile 一次將 map 轉換為 memory。 但是,fstream 在內部不使用 CreateFileMapping/MapViewOfFile,因此文件大小沒有限制(除了文件系統限制)。 即使使用 CreateFileMapping,您也可以將較大文件的 map 部分轉換為 memory,因此除了文件系統施加的限制外沒有其他限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM