У меня есть тысячи строк кодов C++, которые хорошо работают на небольших текстовых файлах, но сбой в огромных текстовых файлах (например, размером 2 ГБ). Причина сбоя: приложение использует память.Как заставить C++ выделять память с диска?
Можно ли выделить память с диска? Потому что в большинстве случаев пространство на жестком диске намного больше, чем физическая память. Если я смогу занять некоторое место с жесткого диска для своего приложения и вернуть его после использования, то у моего приложения мало шансов сбой.
Вот мои дизайнерские мысли:
- Создать временный файл для отображения файла (CreateFileMapping, OpenFileMapping)
- Force моего приложение для выделения памяти из временного файла
- ли некоторая очистка работы: CloseFileMapping и удалить временный файл
Потому что у меня так много существующего кода, если мой дизайн мысли разумный, я не хочу перепроектировать мой проект.
Я не уверен, что дизайн можно реализовать. Кто-нибудь может мне помочь?
PS: Я использую Visual C++ 2010.
Дизайн, основанный на 'CreateFileMapping' и т. Д., Очевидно, разумен; многие приложения используют этот подход. Что именно вы спрашиваете? – user4815162342
Как выпустить мой C++ для выделения памяти с диска? –
Вы на 32-битной ОС? В этом случае вы можете столкнуться с проблемой виртуальной памяти. В противном случае ОС должна иметь возможность управлять памятью. Если на 64-битной ОС вы можете проверить свой допустимый предел VM (увеличение), и для VM вам также должно быть достаточно места на диске. – Abhinav