如何用c++读写一个超过2G的大文件,目的是把一个大文件分块维护在内存中

2025-03-21 22:26:07
推荐回答(3个)
回答1:

大文件可以被一部分一部分地读,这在windows里被以虚拟内存映射文件的方式实现。而不能用其本身的文件流,因为它自己是调用系统API实现的,而又缺少参数,便保险地映射全部文件到内存,而一般系统的虚拟地址空间为用户2G,服务器上才3G。而2G里显然要包括程序文件本身与环境子系统DLL们。所以剩下不足2G了,这下就不够用了,所以不能用C++里的文件流。用windows系统自带的API函数可以实现分块映射读取,当然读完一块要释放掉,不然最后还是不够用,这样就行了,你可以看书去了。

回答2:

32位系统最大就能访问2G吧,你换成64位编译器试试看

回答3:

查查内存文件映射吧。