Использование файловой системы для расширения памяти
-
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 >