Я делаю приложение, которое должно хранить много данных в памяти, чтобы улучшить производительность вычислений.Приложение падает, когда QList слишком сильно растет
Это иерархия списков и объектов, где верхний объект является QList<myObject*>
. При загрузке данных создается множество экземпляров new myObject*
и добавляется в список. Потребление памяти растет, и когда дело доходит до ~ 1.9 Гбит, программа вылетает из строя. Мой компьютер (Vista) имеет 4Gb RAM, и я протестировал его на других компьютерах с меньшим объемом оперативной памяти (XP), и он сбой в той же точке. Могу ли я использовать более 1,9 ГБ оперативной памяти?
Когда загружен файл меньшего размера и использование памяти в соответствии с «Диспетчером задач Windows» (скажем) 1.2Gb, я могу работать с данными. Но если я хочу загрузить другой файл, рост начинается с 1.2Gb даже после вызова delete
на всех объектах и очистки списка. Зачем?
Я попытался переключиться на QVector
и позвонил squeeze()
, но память остается неизменной. Я прочитал другие темы здесь о динамическом распределении памяти в QLists, но действительно ли это не способ сбросить память, прежде чем загружать новый файл? Тем более, что он падает после 1.9Gb; загружая 3 небольших файла последовательно, и я там.
Большое спасибо за любые предложения.
Вы уверены, что вы удалите объект? Проверьте деструктор вашего объекта. Попробуйте cppcheck http://sourceforge.net/projects/cppcheck/ Он может обнаружить некоторые утечки памяти. – 2010-07-08 15:04:38