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

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

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: Обязательно ли удалять поток чтоб освободить память?  (Прочитано 20921 раз)
Ubuntu_linux
Гость
« Ответ #30 : Ноябрь 04, 2011, 04:48 »

Ну поймите, кода очень много... где-то на 5-10 минут компиляции и там много ненужного хлама...
Я вот думаю, у меня на каждую страничку свой qimage на котором рисует пейнтер, мож в этом
загвоздка с drawText ?
Записан
andrew.k
Гость
« Ответ #31 : Ноябрь 04, 2011, 12:02 »

Загвоздка в том, что ты задаешь слишком неопределенные вопросы без подкрепления их участками кода.
Записан
thechicho
Гость
« Ответ #32 : Ноябрь 04, 2011, 14:34 »

может те QtConcurrent лучше заюзать, кстати говоря.

Код
C++ (Qt)
#include <QtGui/QApplication>
#include <QFuture>
#include <QtConcurrentRun>
 
void hello()
{
   qDebug() << "Hello from thread " << QThread::currentThread();
}
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
 
   QFuture<void> future = QtConcurrent::run(hello);
   qDebug() << "hello from GUI thread " << QThread::currentThread();
   future.waitForFinished();
   return 0;  
}

в hello() реализуешь
Цитировать
запускаю процес отрисовки QPainter-ом на QImage текст + картинки
и не надо еб с потоками  Веселый
Записан
Ubuntu_linux
Гость
« Ответ #33 : Ноябрь 04, 2011, 20:06 »

Сделал все в одном потоке, ситуация повторилась Грустный Значит дело не в потоках...

Стартую новую страничку:
Код
C++ (Qt)
void QOutputDev::startPage (int pageNum, GfxState *state)
{         m_pageNum=pageNum;
        m_image = new QImage((int)state-> getPageWidth( ),(int)state-> getPageHeight( ),QImage::Format_ARGB32);
        m_painter = new QPainter (m_image );
       m_painter->setBrush(QBrush(Qt::white));
       QPainterPath path;
       //path.addRoundedRect(0,0,m_image->width(),m_image->height(),20,20);
       path.addRect(0,0,m_image->width(),m_image->height());
       m_painter->drawPath(path);
}
 

Конец странички:

Код
C++ (Qt)
void QOutputDev::endPage()
{
       paint();
       m_painter->end();
       delete m_image;
       delete m_painter;
}

проблема в m_painter-> drawText (QPointF(x1,y1), str ); , если закоментировать, то с памятью все нормально!

Что тут не так?
Записан
Ubuntu_linux
Гость
« Ответ #34 : Ноябрь 04, 2011, 20:17 »

может те QtConcurrent лучше заюзать, кстати говоря.

Код
C++ (Qt)
#include <QtGui/QApplication>
#include <QFuture>
#include <QtConcurrentRun>
 
void hello()
{
   qDebug() << "Hello from thread " << QThread::currentThread();
}
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
 
   QFuture<void> future = QtConcurrent::run(hello);
   qDebug() << "hello from GUI thread " << QThread::currentThread();
   future.waitForFinished();
   return 0;  
}

в hello() реализуешь
Цитировать
запускаю процес отрисовки QPainter-ом на QImage текст + картинки
и не надо еб с потоками  Веселый

Так а в чем фишка?
Записан
SASA
Гость
« Ответ #35 : Ноябрь 05, 2011, 11:53 »

если бы эт был форум задротов грамотности, тогда бы это было уместно. а так лицемерие, ИМХО. а от лицемеров с их "принципами" блювать хочется  Веселый
Вы бы на личности не переходили бы. Звучит как оскорбление. Это неприятно и  неуместно.

P.S.Извините за оффтоп. Он первый начал.  Плачущий
Записан
thechicho
Гость
« Ответ #36 : Ноябрь 06, 2011, 11:09 »

// Вы бы на личности не переходили бы. Звучит как оскорбление. Это неприятно и  неуместно.
а то что ты написал, приятно ТС читать? хотя ТС какой-то странный и походу, что ему глубоко пофик на твое мнение, но все же, оно неуместно!
и я лично про тебя ничего не говорил, а написал в общем, что не люблю лицемеров.

// P.S.Извините за оффтоп. Он первый начал.
детский сад Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #37 : Ноябрь 06, 2011, 11:36 »

проблема в m_painter-> drawText (QPointF(x1,y1), str ); , если закоментировать, то с памятью все нормально!

Что тут не так?
Ну в приведенном Вами фрагменте drawText вообще не просматривается  Улыбающийся На всякий случай я бы поменял местами delete m_image/m_painter (чтобы было типа push/pop). Также обнулил бы эти указатели после удаления. Шансов что это поможет очень мало, но почиститься никогда не мешает.

Дальше стал бы  выкидывать из paint куски и смотреть - ну Вы так и делаете.
Записан
Ubuntu_linux
Гость
« Ответ #38 : Ноябрь 06, 2011, 20:14 »

проблема в m_painter-> drawText (QPointF(x1,y1), str ); , если закоментировать, то с памятью все нормально!

Что тут не так?
Ну в приведенном Вами фрагменте drawText вообще не просматривается  Улыбающийся На всякий случай я бы поменял местами delete m_image/m_painter (чтобы было типа push/pop). Также обнулил бы эти указатели после удаления. Шансов что это поможет очень мало, но почиститься никогда не мешает.

Дальше стал бы  выкидывать из paint куски и смотреть - ну Вы так и делаете.
попробую...
Но в принципе там же стоит m_paiter->end()  перед удалением.
Записан
SASA
Гость
« Ответ #39 : Ноябрь 06, 2011, 22:52 »

// Вы бы на личности не переходили бы. Звучит как оскорбление. Это неприятно и  неуместно.
а то что ты написал, приятно ТС читать? хотя ТС какой-то странный и походу, что ему глубоко пофик на твое мнение, но все же, оно неуместно!
и я лично про тебя ничего не говорил, а написал в общем, что не люблю лицемеров.
Я сделал замечание по поводу формы. Я читаю этот форум и хочу, чтоб люди старались писать грамотно. А Вы сказали, что так делают только лицемеры. Это оскорбление.

P.S. Если  бы мне сделали такое замечание, я бы исправил свое сообщение.
Записан
andrew.k
Гость
« Ответ #40 : Ноябрь 07, 2011, 00:21 »

чечино, у тебя что аватар, что большинство твоих сообщений на грани фола.
ты сейчас не прав, но продолжаешь что-то писать не по делу.
себя так не ведут. ты портишь этим форум.

хотелось бы узнать, помог ли совет igors
« Последнее редактирование: Ноябрь 07, 2011, 00:24 от andrew.k » Записан
Ubuntu_linux
Гость
« Ответ #41 : Ноябрь 07, 2011, 03:00 »

...
хотелось бы узнать, помог ли совет igors

НЕ ПОМОГЛО!

на 70 страничек ~ 45MБ памяти, пипец.
но если закоментировать m_painter-> drawText (QPointF(x1,y1), str ); и вместо текста рисовать прямоугольники то все в порядке ~13МБ  памяти. ( с самой пргой)
Что за херня?
Записан
thechicho
Гость
« Ответ #42 : Ноябрь 07, 2011, 11:11 »

// Я читаю этот форум и хочу, чтоб люди старались писать грамотно
ну я ж грю лицемер.

andrew.k
на свою посмотри  Веселый
а так это оффтоп. иногда забавно его почитать.
особенно, когда SASA извеняется, а потом оффтопит. просто перлы выдает Смеющийся
ТС все равно код зажал и хочет, чтобы ему телепаты из пальца высосали решение Веселый
так что это вся тема, сплошной оффтоп, поэтому я не считаю себя неправым или виноватым.
но оффтопить больше не буду Веселый
Записан
Bepec
Гость
« Ответ #43 : Ноябрь 14, 2011, 08:51 »

Ubuntu_linux - хватит пложить печаль и багопроизводство - с тебя твой проект, или урезанная его версия, создающая/отрисовывающая/рисующая текст. И мы тогда уж 100% разберем.

А так - Кабы если бы кабы, да в лесу да по грибы, да по маленькой опушке шли неведомы зверушки, а в дебагерах ошибки, добавляются так шибко, а при запуске экран, синий весь парам там там.
Записан
Ubuntu_linux
Гость
« Ответ #44 : Ноябрь 15, 2011, 13:56 »

скоро
« Последнее редактирование: Ноябрь 15, 2011, 19:06 от Ubuntu_linux » Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


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