crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Увеличение потребляемых ресурсов, Проблема с памятью
Thelearning
  опции профиля:
сообщение 11.3.2011, 23:58
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 27.2.2011
Пользователь №: 2453

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем доброго времени суток!
Сразу оговорюсь C++ плотно не изучал, но появилась необходимость в изучении Qt4. Читаю книгу Макса Шлее "Qt 4.5 Профессиональное программирование на C++".
В книге есть пример с LCD индикатором и полосой прокрутки. Я добавил туда еще и прогрессбар.

Вопрос в следующем: при запуске программки, она потребляет определенное количество оперативной памяти, когда пользователь (в данном случае я) двигает ползунок, количество потребляемых ресурсов увеличивается, но при прекращении действий, не уменьшается. Таким образом если двигать ползунок долго и упорно, выделяемая на процесс память так же увеличивается постоянно и не уменьшается. :blink: Так и должно быть?? Получается, что со временем этот виджет будет кушать все больше и больше. Как это исправить??

Заранее спасибо! )))

Вот код:

#include <QtGui>

int main (int argc, char** argv)
{
    QApplication app(argc,argv);
    QWidget wgt;
    QLCDNumber* plcd = new QLCDNumber(4);
    QScrollBar* phsb = new QScrollBar(Qt::Horizontal);
    phsb->setRange(0,100);
    QProgressBar* prgb = new QProgressBar();

    QObject::connect(phsb, SIGNAL(valueChanged(int)),
                     plcd, SLOT(display(int)));
    QObject::connect(phsb, SIGNAL(valueChanged(int)),
                     prgb, SLOT(setValue(int)));

    QVBoxLayout* layout = new QVBoxLayout;
    layout->addWidget(plcd);
    layout->addWidget(prgb);
    layout->addWidget(phsb);
    wgt.setLayout(layout);

    wgt.resize(250,150);
    wgt.show();

    return app.exec();
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Thelearning
  опции профиля:
сообщение 12.3.2011, 19:51
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 27.2.2011
Пользователь №: 2453

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
а если убрать соединения этих двух сигналов - поведение такое же ? Может быть, глюк в LCD

Поведение точно такое же. Причем не изменяется если убрать один из них, либо оба.

Цитата
запустил твою прогу. я бы сказал, что ты преувеличиваешь. Да, память забирает поначалу, но если подвигать окно по экрану, это тоже память подберёт. Ну, увеличилась она на 300 кб или типа того.. дальше не потребляется. думаю, всё в норме

Я тоже по началу подумал, что нормально все. Но поведение следующее: потребляемая память увеличивается более заметно если не просто водить ползунок из стороны в сторону, а нажимать левой кнопкой мыши по стрелкам полосы прокрутки... далее на определенном этапе процесс вроде прекращается, но если подождать несколько секунд и продолжить тыкать в полосу, но память растет опять. Я так за пару минут увеличил объем потребляемой памяти на 2 мб...

Цитата
что диспетчеры показывают не ту инфу о памяти, которую ты ожидаешь...

Тут абсолютно согласен. Использовать диспетчер задач стандартный (у мну ОС Windows 7) не очень интересно для выявления подобного рода ошибок. Но тем не менее тенденцию проследить можно. Возможно стоит просто сменить программку, которая отслеживает память??
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.3.2025, 1:13