Ошибка bad_allock при попытке прочитать большой файл в QT - PullRequest
1 голос
/ 03 января 2012

Как прочитать файл размером более 600 МБ в qt? Я пытаюсь прочитать файл с помощью file.readAll (). Работает небольшими файлами. но это дает ошибку bad_alloc в больших файлах? что мне делать?

Ответы [ 3 ]

2 голосов
/ 09 августа 2012

Попробуйте добавить

QMAKE_LFLAGS += -Wl,--large-address-aware

в ваш файл qt pro, насколько я понимаю, он позволит процессу накапливать больше памяти, чем 2 ГБ.

1 голос
/ 04 января 2012

Не делайте этого.

Редко необходимо загружать огромный файл в память за одну операцию.

Нельзя загружать столько информациидля пользовательской навигации или манипуляций, так что, если, как я подозреваю, вы просто действуете как посредник между размещением файла на диске и отправкой файла в другое место, используйте механизм, который обрабатывает Qfile как QIODevice полной загрузки всего как QString или QByteArray.

Если вы (или ваши клиенты) используете Windows 32-разрядную систему, но, скорее всего, в вашем распоряжении более 2 ГБ ОЗУ, вы можете захотетьпомните о компоновщике / LARGEADDRESSAWARE , который позволит вам поддерживать адреса размером более 2 ГБ и который может также улучшить вашу ситуацию, если вы действительно не можете обойтись без загрузки файла в память.

1 голос
/ 03 января 2012

Подумайте о том, чтобы прочитать файл порциями, а не все сразу.Конечно, ваша цель может состоять в том, чтобы отобразить весь файл в текстовом редакторе, в этом случае его частичная загрузка является более сложной.Вы очень расплывчаты, поэтому трудно быть более конкретным.

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