以下のコードを使用して、サイズが約 400 ~ 800MB のファイルを開きます。
#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;
}
上記のコードを小さなファイルに向けると、例外は発生しません。ただし、(外部 USB 上の) 数百 MB のファイルを見ると、例外が発生します。
ReadingFiles.exe の 0x7521C41F で未処理の例外: Microsoft C++ 例外: メモリ位置 0x0040FBD4 での boost::interprocess::interprocess_exception。
2.4GB の RAM が空いているので、メモリが不足しているのではないでしょうか?