Russian Qt Forum
Ноябрь 22, 2024, 13:49
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
QImage: out of memory, returning null image [Решено]
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QImage: out of memory, returning null image [Решено] (Прочитано 10390 раз)
Torvald
Самовар
Offline
Сообщений: 119
QImage: out of memory, returning null image [Решено]
«
:
Июнь 30, 2017, 14:41 »
Windows 7 x64, приложение скомпилено MinGW 5.3 x32.
Открываю диспетчер задач - смотрю потребление памяти. Оно не превышает 1.5гб в пике, но тем не менее в определенный момент приложение вылетает с ошибкой
QImage: out of memory, returning null image
Приложение - графический редактор, само изображение имеет размер 6000х4000
«
Последнее редактирование: Июнь 30, 2017, 15:14 от Torvald
»
Записан
Apktyc
Самовар
Offline
Сообщений: 133
Re: QImage: out of memory, returning null image
«
Ответ #1 :
Июнь 30, 2017, 15:09 »
Используйте для сборки
Код
C++ (Qt)
QMAKE_LFLAGS
+=
-
Wl
,--
large
-
address
-
aware
Это слегка отсрочит окончание памяти.
А так, наверное нужен свой алокатор.
Записан
Torvald
Самовар
Offline
Сообщений: 119
Re: QImage: out of memory, returning null image
«
Ответ #2 :
Июнь 30, 2017, 15:13 »
Спасибо, еще я кажется понял одну вещь.
Для 32-битного приложение ограничение статической памяти и динамической - по 2 гигабайта, то есть всего 4. Изображения, естественно, находятся в динамической памяти.
Диспетчер задач не позволяет просмотреть пик потребления памяти, например при вычислениях, потребление памяти может на доли секунды возрастать на несколько сотен мегабайт. Отсюда и вылеты.
Записан
Apktyc
Самовар
Offline
Сообщений: 133
Re: QImage: out of memory, returning null image
«
Ответ #3 :
Июнь 30, 2017, 15:47 »
Цитата: Torvald от Июнь 30, 2017, 15:13
Для 32-битного приложение ограничение статической памяти и динамической - по 2 гигабайта, то есть всего 4.
Ну, стек на 2 ГБ - это вы конечно круто замахнулись
По-умолчанию он наверное мегабайта 2.
А вот чтобы адресовать в куче (для х86) сверх 2 ГБ и нужны флаги выше.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: QImage: out of memory, returning null image [Решено]
«
Ответ #4 :
Июнь 30, 2017, 15:49 »
QImage не позволяет хранить очень большие изображения, вот тут
https://github.com/qt/qtbase/blob/dev/src/gui/image/qimage.cpp#L130
проверка на то, что оно влезет. Лень высчитывать, влезет ли ваше изображение.
Записан
Torvald
Самовар
Offline
Сообщений: 119
Re: QImage: out of memory, returning null image [Решено]
«
Ответ #5 :
Июнь 30, 2017, 15:51 »
да да, влезает. Еслиб не влезало - упало бы сразу.
Записан
Apktyc
Самовар
Offline
Сообщений: 133
Re: QImage: out of memory, returning null image [Решено]
«
Ответ #6 :
Июнь 30, 2017, 16:00 »
Ограничение QImage 32767x32767
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QImage: out of memory, returning null image [Решено]
«
Ответ #7 :
Июнь 30, 2017, 16:01 »
Цитата: Torvald от Июнь 30, 2017, 14:41
само изображение имеет размер 6000х4000
Ну это всего лишь 96 Мb, до полутора гектаров еще далеко. А вообще некоторые ОС не выделяют слишком большие куски (> 1 Gb) даже если эта память имеется и даже в 64-бит
Записан
Torvald
Самовар
Offline
Сообщений: 119
Re: QImage: out of memory, returning null image [Решено]
«
Ответ #8 :
Июнь 30, 2017, 16:09 »
96 мб, да, но это графический редактор, там еще полно всякого - для оптимизации создается много дополнительных буферов с промежуточными вычислениями размером с оригинальное изображение. Для аналогии могу привести лайтрум - там, одно только открытие подобного изображения, увеличивает потребление памяти на 800мб. Но в лайтруме, конечно, свой менеджер памяти, это я так, для сравнения.
Записан
Apktyc
Самовар
Offline
Сообщений: 133
Re: QImage: out of memory, returning null image [Решено]
«
Ответ #9 :
Июнь 30, 2017, 16:15 »
Проблема что это 96 МБ одним куском. Так что, увеличение кучи лишь отсрочка.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QImage: out of memory, returning null image [Решено]
«
Ответ #10 :
Июль 01, 2017, 11:24 »
Цитата: Torvald от Июнь 30, 2017, 16:09
96 мб, да, но это графический редактор, там еще полно всякого - для оптимизации создается много дополнительных буферов с промежуточными вычислениями размером с оригинальное изображение. Для аналогии могу привести лайтрум - там, одно только открытие подобного изображения, увеличивает потребление памяти на 800мб. Но в лайтруме, конечно, свой менеджер памяти, это я так, для сравнения.
Разбазаривание памяти (и ресурсов вообще) - чисто проблема программиста. Придется пересмотреть подход (и это правильно).
Цитата: Apktyc от Июнь 30, 2017, 16:15
Проблема что это 96 МБ одним куском. Так что, увеличение кучи лишь отсрочка.
Такие блоки выделялись без проблем еще на древнем XP
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: QImage: out of memory, returning null image [Решено]
«
Ответ #11 :
Июль 01, 2017, 12:11 »
Цитата: Igors от Июнь 30, 2017, 16:01
А вообще некоторые ОС не выделяют слишком большие куски (> 1 Gb) даже если эта память имеется и даже в 64-бит
Неужели. Сможете назвать хоть одну?
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...