Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448

Приложение и занимаемая ею память

29.07.2017, 00:50. Показов 1751. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть приложение. При запуске занимает 6 мб памяти.
Есть возможнось открыть папку и файл (QFileDialog::getExistingDirectory() и QFileDialog::getOpenFileName() соответственно).
После вызова одной из функций занимаемая память увеличивается где-то на 10 мб.
На форумах говорят что всё нормально, так и должно быть.
В приложении так же есть возможность запустить несколько диалоговых окон.
При вызове и закрытия каждый из них увеличивает занимаемую память на какие-то кб.
Нормальное ли это явление?
После выхода из приложения память освобождается.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.07.2017, 00:50
Ответы с готовыми решениями:

Action и указатели на них. Занимаемая память
Всем привет. Допустим по нажатию на кнопку создаётся пару Action'ов и указатели на них. Action'ы добавляются скажем, на ToolBar. Всё,...

Память, занимаемая в программах
Часто в задачах есть условие по времени и памяти, например: 1 секунда, 256 мб. Как нам узнать и первое, и второе? Как понимаю, при...

Память занимаемая программой
Здравствуйте. Возникла надобность в исследовании затрат ОЗУ на мою программу. Программа простая: 1 поток 1 форма. Вопрос: можно ли узнать...

9
34 / 26 / 8
Регистрация: 24.03.2015
Сообщений: 191
29.07.2017, 04:31
А что вас смущает? QT подгружает динамические библиотеки для открытия диалоговых окон. Пока она тебе не нужна, в память он ее не загружает.
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
29.07.2017, 11:50  [ТС]
crush91, это понятно. Меня смущает то что очищается не вся память.
Т. е. открываю одно из диалоговых окон, память увеличивается, допустим, на 2 мб.
После закрытия окна очищаются не все 2 мб. Какие-то кб остаются.
Это нормально?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
29.07.2017, 13:26
n1b1ru, воспользуйтесь каким-нибудь memory debugger, и проверь что остаётся неочищенным после работы программы. Возможно дело и не в QFileDialog, а в вашем коде (что там что-то не очищается)...
1
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
29.07.2017, 19:30  [ТС]
TRam_, проверил через Dr. Memory. Действительно не очищалось:
1 unique, 1 total, 688 byte(s) of leak(s)
3 unique, 50 total, 800 byte(s) of possible leak(s)
Добавил в деструкторы классов очистку объектов:
C++ (Qt)
1
2
3
4
5
6
QList<QObject* > objList = this->children();
 
foreach(QObject* obj, objList)
{
    delete obj;
}
Теперь утечка отсутствует, но есть possible leak(s):
0 unique, 0 total, 0 byte(s) of leak(s)
3 unique, 54 total, 864 byte(s) of possible leak(s)
Не знаю страшно это или нет...
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
29.07.2017, 21:43
Так делать нельзя, т.к. дважды вызывать delete для одного и того же объекта нельзя, а в твоём случае
1 unique, 1 total, 688 byte(s) of leak(s)
т.е. всего один единственный obj не удалялся. То есть надо выяснить какой именно.
1
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
29.07.2017, 22:00  [ТС]
TRam_, ок, буду искать. А possible leak(s) важны?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
29.07.2017, 22:21
Цитата Сообщение от n1b1ru Посмотреть сообщение
А possible leak(s) важны?
Не столь важны, как "прямые ошибки". Ну например у меня в "пустом" проекте Qt получается 4 possible leaks и 66 handle leaks, но это связано с внутренними процессами в винде, с работой OpenGL, и прочим.
1
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
30.07.2017, 19:09  [ТС]
Спасибо, TRam_.
Похоже дело было в объекте QTableWidget. Пришлось его удалять в деструкторе.
Сейчас всё стабильней. Утечек по крайней мере Dr. Memory больше не обнаруживал.
Ещё потестирую.

Добавлено через 16 часов 51 минуту
TRam_, имеет ли место подобная очистка в деструкторе:
C++ (Qt)
1
2
3
4
5
6
7
8
9
QList<QObject* > objList = this->children();
 
foreach(QObject* obj, objList)
{
    if(obj)
    {
        delete obj;
    }
}
Добавлено через 1 час 15 минут
Похоже не имеет. Что-то остаётся иногда в "главном" классе, не пойму пока что именно
0
 Аватар для icpu
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
30.07.2017, 20:48
Если у наследников QObject есть родитель, объект будет удалён со смертью родителя. вместо delete obj; лучше дёргать obj->deleteLater();
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2017, 20:48
Помогаю со студенческими работами здесь

Память занимаемая указателем на струкруру
есть структура N struct N { int v; N* n; } память занимаемая структурой 8 байт(я все время считал что указатель...

Занимаемая память приложения. System.OutOfMemoryException: "Выдано исключение типа "System.OutOfMemoryException"."
Спустя несколько часов работы приложения выдаёт вот такую ошибку: System.OutOfMemoryException: &quot;Выдано исключение типа...

Ширина занимаемая колонками в DataGridView
class grid : DataGridView { //... this.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None; private int...

Приложение съедает память
Добрый день, форумчане. После запуска приложения, при каждом клике съедается 300кб. Не пойму за счет чего идет утечка памяти....

CSS. Невидимый блок и его занимаемая площадь
Предположим, что есть такой кусочек: &lt;div class=&quot;first&quot;&gt; &lt;div class=&quot;second&quot;&gt; &lt;img width=&quot;100&quot; height=&quot;100&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru