Russian Qt Forum
Ноябрь 22, 2024, 22:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 5   Вниз
  Печать  
Автор Тема: qvector.h, line 489: Out of memory  (Прочитано 30680 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #15 : Ноябрь 17, 2014, 11:14 »

PS Вылетает скорее всего изза предела в 2 Гб для x32 программы.

В точку по поводу x32. Но насчёт 2 Гб - не знаю как устроены классы, но потребление в аттаче
Откомпилировал свой проект под msvc 2013 с Qt 5.3.1 opengl 64 и мой большой файл открылся без проблем. К сожалению нет возможности проверить работу при msvc x32 компиляторе. Но, думаю, что там будет то же.

Повторить подобную ошибку мне не удалось в минимально компилябельном проекте. То, что я присылал немного отличается от того, что происходит в реальном проекте. В том, что я выслал происходит зависание, а в моем реальном именно выпадает ошибка.

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #16 : Ноябрь 17, 2014, 11:23 »

В 32 архитектуре процессу доступно только 2 GB оперативы. Я тоже склоняюсь, что проблема в этом.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #17 : Ноябрь 17, 2014, 11:28 »

В 32 архитектуре процессу доступно только 2 GB оперативы.
Под вендой.
В linux - 3 Gb.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #18 : Ноябрь 17, 2014, 11:29 »

В 32 архитектуре процессу доступно только 2 GB оперативы.
Под вендой.
В linux - 3 Gb.
Да, забыл уточнить. Спасибо. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #19 : Ноябрь 17, 2014, 11:32 »

Спасибо за ответы.
Немного стыдно, что не знал про 2ГБ. Я был уверен, что выделяется до 4ГБ, если приложение запустить из-под x64
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #20 : Ноябрь 17, 2014, 11:47 »

А как отлавливать такие исключения? Куда цеплять try?
Записан
Bepec
Гость
« Ответ #21 : Ноябрь 17, 2014, 11:50 »

Под виндой это довольно запутанно и сложно Веселый

Имеется вроде бы блок для ловли таких вот гадостей в __try.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #22 : Ноябрь 17, 2014, 11:51 »

ИМХО, под виндой такое сложно отловить. Нужно изначально разрабатывать, чтобы не превышать лимитов.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #23 : Ноябрь 17, 2014, 14:14 »

ИМХО, под виндой такое сложно отловить. Нужно изначально разрабатывать, чтобы не превышать лимитов.

Так понимаю, лимиты подбираются на ощупь в моем случае.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #24 : Ноябрь 17, 2014, 14:15 »

А еще интересно вот что!
Если я беру этот же массив и вывожу не в одну колонку, а в 3, то ошибка не выскакивает.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #25 : Ноябрь 17, 2014, 14:16 »

ИМХО, под виндой такое сложно отловить. Нужно изначально разрабатывать, чтобы не превышать лимитов.

Так понимаю, лимиты подбираются на ощупь в моем случае.
Ну, смотри, Куьют из скулайтной базы подтягивает данные по 256 строк. Можешь так примерно и сделать. Пользователю не нужно видеть мульоны строк, ему нужно 100 +- 50 максимум. А дальше можно отфильтровать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #26 : Ноябрь 17, 2014, 14:50 »

Можешь так примерно и сделать. Пользователю не нужно видеть мульоны строк, ему нужно 100 +- 50 максимум. А дальше можно отфильтровать.

Как при этом должен работать скроллбар? Если я захочу потянуть за него?
Он должен просто иметь 3 положения: верх, низ и середина?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #27 : Ноябрь 17, 2014, 15:00 »

Хм. По-идее, можно размер передавать реальный, а вот в памяти держать только нужные данные. Вьюха не запрашивает данные для ячеек, которые не видны. Исключением будет если ты пытаешься сделать ресайз колонок под содержимое - тогда делается пробег по всем значениям.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #28 : Ноябрь 17, 2014, 15:25 »

Хм. По-идее, можно размер передавать реальный, а вот в памяти держать только нужные данные. Вьюха не запрашивает данные для ячеек, которые не видны. Исключением будет если ты пытаешься сделать ресайз колонок под содержимое - тогда делается пробег по всем значениям.

У меня 5.3 и вьюха, как мне кажется, делает пробег по всем колонкам/строкам (скрытым и отображенным). Более того, она делает это мультипоточно.

Одни и теже данные я пытаюсь отобразить в 3 колонки, а затем в 1. Ничего не меняю в памяти кроме nColumns и nRows.
При отображении в 3 все ок. А при отображении в 1 выброс.
Также я вешал на методы data, headerData функцию qDebug(). Она вызывалась много большее число раз, чем строк имеется в отображении.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #29 : Ноябрь 17, 2014, 15:27 »

Прокси?
Ресайз политика колонок/строк?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: 1 [2] 3 4 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.061 секунд. Запросов: 22.