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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: поглядеть сколько выделилось памяти  (Прочитано 5993 раз)
linkr
Гость
« : Июнь 10, 2010, 18:15 »

во времени дебагинга возможно на определенной точке остановке? да и какие средства, для отлова утечек, на linux используют?

мне слот deleteLater() не внушает доверия, хочу проверить, правильно ли работает .

зы разделом ошибся , перенесите плз
« Последнее редактирование: Июнь 10, 2010, 18:19 от linkr » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Июнь 10, 2010, 18:23 »

работает, успокойся. В qt мало критических утечек
valgrind
кстати слабо в деструкторе брейкпойнт поставить?)
и не надеюсь ты не отправляешь объект на удаление перед  выходом из цикла событий?
« Последнее редактирование: Июнь 10, 2010, 18:25 от Авварон » Записан
linkr
Гость
« Ответ #2 : Июнь 10, 2010, 18:41 »

работает, успокойся. В qt мало критических утечек

valgrind
кстати слабо в деструкторе брейкпойнт поставить?)

в потоках не применяю деструкторы , а слот вызывается в нем, и объект не проверишь потом удалился или нетПодмигивающий
Цитировать
и не надеюсь ты не отправляешь объект на удаление перед  выходом из цикла событий?

'не' наверно лишняя ) в том то и дело , что ,вроде как ,так оно и есть))) цикла событий потока )))
« Последнее редактирование: Июнь 10, 2010, 18:44 от linkr » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Июнь 10, 2010, 19:09 »

чем обусловлено отсутствие деструкторов?
соедини сигнал треда finished() со слотом в нем, который очистит всё. Только следи что этот слот выполнится в глав потоке скорее всего.
Записан
garryHotDog
Гость
« Ответ #4 : Июнь 10, 2010, 19:15 »

у меня тоже было не доверие к deleteLater(); - проверял точкой останова в деструкторе и еще вот что :
Цитировать
void QObject::destroyed ( QObject * obj = 0 )   [signal]
This signal is emitted immediately before the object obj is destroyed, and can not be blocked.

All the objects's children are destroyed immediately after this signal is emitted.

See also deleteLater() and QPointer.
- отловив этот сигнал - узнаешь что объект уничтожился!!!
Записан
linkr
Гость
« Ответ #5 : Июнь 10, 2010, 19:31 »

у меня тоже было не доверие к deleteLater(); - проверял точкой останова в деструкторе и еще вот что :
Цитировать
void QObject::destroyed ( QObject * obj = 0 )   [signal]
This signal is emitted immediately before the object obj is destroyed, and can not be blocked.

All the objects's children are destroyed immediately after this signal is emitted.

See also deleteLater() and QPointer.
- отловив этот сигнал - узнаешь что объект уничтожился!!!

супер...
Авварон меня что-то пугает) подскажи нужную опцию, а то в новом созданном проекте

Код:
#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

получаю такой результат

 valgrind  --leak-check=full  --show-reachable=yes  ./Lin_server

Код:
==9227== LEAK SUMMARY:
==9227==    definitely lost: 1,952 bytes in 8 blocks
==9227==    indirectly lost: 7,500 bytes in 376 blocks
==9227==      possibly lost: 610,734 bytes in 4,113 blocks
==9227==    still reachable: 364,449 bytes in 5,234 blocks
==9227==         suppressed: 0 bytes in 0 blocks

« Последнее редактирование: Июнь 10, 2010, 19:47 от linkr » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Июнь 10, 2010, 19:56 »

валгринд - не ко мне... на маке он не работает для 64бит аппликух, и есть встроенная мегатулза к-ая с виду умнее валгринда (да еще и гуевая)
валгринд показывает в тч утечки разных статических объектов, которые не удаляются должным образом (косяк троллей, но на статики можно забить - они ж не утекают на самом деле). Гугли как это отсеять)
Записан
linkr
Гость
« Ответ #7 : Июнь 10, 2010, 20:01 »

 мак PC? версия? название тулзы?
« Последнее редактирование: Июнь 10, 2010, 20:05 от linkr » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Июнь 10, 2010, 20:10 »

мак - macintosh... 10.6
тулза "запрятана" внутри /Developer/Applications/Instruments.app (зовется Leaks)
та что /Developer/ApplicationsPerformance Tools/MallocDebug.app претендует на звание быть глючной (тк я ей не смог запустить ни 1 большое приложение)
Записан
Sahab
Гость
« Ответ #9 : Июнь 10, 2010, 21:34 »

утечки разных статических объектов
Непонимающий
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #10 : Июнь 10, 2010, 21:52 »

Код:
Class A
{
   static Object * o;
}

//*.cpp:
Object A::o = new Object();
утечка? или нет? В коде удаления нигде нет
Записан
ритт
Гость
« Ответ #11 : Июнь 10, 2010, 22:58 »

сравним с
Код:
Q_GLOBAL_STATIC(Object, o)
Улыбающийся
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #12 : Июнь 10, 2010, 23:04 »

ага, только где про эти макросы прочесть можно?) то, что ты юзал в зип энжине, взрывает мозг;)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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