0
我使用下面的代碼要打開的是約400文件大小800MB:問題與升壓::內存映射〜500MB,外置USB文件
#include <boost\interprocess\file_mapping.hpp>
#include <boost\interprocess\mapped_region.hpp>
#include <iostream>
#include <vector>
#include <string>
using namespace boost::interprocess;
using namespace std;
int main(){
file_mapping fm("C:\\test\\1.txt",read_only);
mapped_region region(fm,read_only);
const char* const data = static_cast<const char*>(region.get_address());
const size_t max_size = region.get_size();
cout << max_size;
int b;
cin >> b;
}
如果我點上面的代碼到小文件我也不例外。然而,在幾百-MB-文件找(在外部USB)時,我得到一個異常:
未處理的異常處0x7521C41F在ReadingFiles.exe:微軟 C++異常:升壓::進程間: :在內存 位置0x0040FBD4處的interprocess_exception。
我有2.4GB的RAM空閒 - 所以它不應該是我用盡內存?
32位程序? 32位窗口? – Greenflow
我認爲這是解決方案(32位程序)。把它作爲答案,我會接受。謝謝 – user997112
請注意,一個32位的Windows程序只能使用2Gb的內存地址空間。 (並且在該地址空間中存在已映射的.dll,代碼,堆等等部分,進一步減少可用內存32位進程可以從 – nos