Использование файловой системы для расширения памяти - PullRequest
1 голос
/ 01 ноября 2008

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 01 ноября 2008

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

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

0 голосов
/ 01 ноября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...