memory allocation failed
От: Jaakko Беларусь  
Дата: 18.07.08 09:44
Оценка: :)
Доброго времени суток. Извините, если тема немного несоответствует разделу, но не знаю, куда бы она лучше подошла..
У меня возникла следующая интересная проблема.
В проекте для генерации базы, используются сторонние программы, написанные на C++ в Visual C++ 6.0. Исходных кодов

этих программ нет.
Эти программы генерируют конечный детерминированный автомат из файла, который содержит слова. Всё было хорошо, пока

слов было не много (~400к), однако при увеличении до ~1.5м слов, одна из программ стала вылетать, выдавая ошибку

"memory allocation failed".
Дизассемблировав exe'шник, выяснил, что данную ошибку могут выдавать ф-и malloc, calloc и realloc. Те, программе не

хвататет размера кучи(heap'а). Попробовал увеличить размер свопа — не помогло. Открыл task manager и посмотрел, как

используется память при работе этой программы.. 2Гб памяти(всё, что есть) съедаются полностью, вместе со свопом,

съедается около 3Гб.
Первое разумное решение — добавить оперативной памяти, но сейчас это вряд ли удастся.
Вопрос такой, есть ли программы, способы, с помощью которых можно заставить конкретную программу работать с жёстким

диском вместо кучи? Не важно, что упадёт производительность.
Или, может быть, подскажите другие варианты решения этой проблемы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.