Доброго времени суток. Извините, если тема немного несоответствует разделу, но не знаю, куда бы она лучше подошла..
У меня возникла следующая интересная проблема.
В проекте для генерации базы, используются сторонние программы, написанные на C++ в Visual C++ 6.0. Исходных кодов
этих программ нет.
Эти программы генерируют конечный детерминированный автомат из файла, который содержит слова. Всё было хорошо, пока
слов было не много (~400к), однако при увеличении до ~1.5м слов, одна из программ стала вылетать, выдавая ошибку
"memory allocation failed".
Дизассемблировав exe'шник, выяснил, что данную ошибку могут выдавать ф-и malloc, calloc и realloc. Те, программе не
хвататет размера кучи(heap'а). Попробовал увеличить размер свопа — не помогло. Открыл task manager и посмотрел, как
используется память при работе этой программы.. 2Гб памяти(всё, что есть) съедаются полностью, вместе со свопом,
съедается около 3Гб.
Первое разумное решение — добавить оперативной памяти, но сейчас это вряд ли удастся.
Вопрос такой, есть ли программы, способы, с помощью которых можно заставить конкретную программу работать с жёстким
диском вместо кучи? Не важно, что упадёт производительность.
Или, может быть, подскажите другие варианты решения этой проблемы?