Использование файловой системы для расширения памяти

StackOverflow https://stackoverflow.com/questions/256009

  •  05-07-2019
  •  | 
  •  

Вопрос

Я должен предварять это, говоря, что я работаю над приложением для карманного компьютера, а файлы данных живут на SD-картах.

У меня есть приложение, которое должно создать массив размером х. malloc терпит неудачу каждый раз.

У меня есть файл на 1 гигабайт на карте на 4 гигабайта.
У меня 64 мегабайта встроенной памяти (ram / data / application / os)
Я не могу обработать данные, потому что массив мне нужен слишком большой.
Доступ к SD-карте почти так же быстро, как RAM.
Я работаю в C ++ (MFC)

Как лучше всего получить доступ к файлу, который я собираюсь использовать в качестве массива?
Или есть другой способ сделать это?

Это было полезно?

Решение

Вы должны создать файл, достаточно большой для массива, с подходящим дополнением (согласно GetSystemInfo) и сопоставить файл с помощью CreateFileMapping / MapViewOfFile.

По крайней мере, это будет моя первая попытка - могут быть ограничения на размер отображаемого файла в CE.

Другие советы

Вам необходимо создать окно из n записей (которое поместится в памяти) и переместить это окно, чтобы сохранить в нем записи, над которыми вы работаете. Я не достаточно свободно владею mfc, чтобы дать вам пример кода, но это не так сложно.

В c # я написал бы собственный IEnumerable < T >

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top