Проблема с boost :: memory-mapping ~ 500MB, внешний файл USB

Я использую приведенный ниже код для открытия файлов размером примерно от 400 до 800 МБ:

#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) я получаю исключение:

Необработанное исключение в 0x7521C41F в ReadingFiles.exe: Microsoft
C ++ исключение: boost :: interprocess :: interprocess_exception в памяти
местоположение 0x0040FBD4.

У меня 2,4 ГБ ОЗУ свободно, так что не должно быть, что у меня закончилась память?

0

Решение

Если ваша программа скомпилирована как 32-битная, вам, скорее всего, не хватает памяти. Вроде, как бы, что-то вроде. 2,4 ГБ свободной не обязательно означает 2,4 ГБ свободной непрерывной памяти. Возможно, вы не сможете получить достаточно большой кусок для сопоставления вашего файла.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]