Russian Qt Forum

Qt => Общие вопросы => Тема начата: UVV от Январь 10, 2011, 12:33



Название: Утечка в Qt
Отправлено: UVV от Январь 10, 2011, 12:33
У кого-нибудь такое есть?
Цитировать
==30266== 120 bytes in 1 blocks are definitely lost in loss record 891 of 1,268
==30266==    at 0x4C9C082: operator new(unsigned int) (vg_replace_malloc.c:214)
==30266==    by 0xA1E91DC: getEngineData(QFontPrivate const*, QFontCache::Key const&) (qfontdatabase.cpp:1002)
==30266==    by 0xA1EE6C0: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1915)
==30266==    by 0xA1C7817: QFontPrivate::engineForScript(int) const (qfont.cpp:270)
==30266==    by 0xA1E387F: QFontMetrics::height() const (qfontmetrics.cpp:329)
==30266==    by 0x8114BDE: HexViewModel::headerData(int, Qt::Orientation, int) const (hexviewmodel.cpp:235)
==30266==    by 0xA5D2B30: QHeaderView::sectionSizeFromContents(int) const (qheaderview.cpp:2544)
==30266==    by 0xA5CC058: QHeaderView::sizeHint() const (qheaderview.cpp:536)
==30266==    by 0xA5F610F: QTableView::updateGeometries() (qtableview.cpp:2024)
==30266==    by 0xA5F5F2F: QTableView::columnCountChanged(int, int) (qtableview.cpp:1999)
==30266==    by 0xA5FAE0E: QTableView::qt_metacall(QMetaObject::Call, int, void**) (moc_qtableview.cpp:140)

Qt 4.7.1, Linux x86


Название: Re: Утечка в Qt
Отправлено: brankovic от Январь 10, 2011, 13:22
На позапрошлой работе был qt 3, на него тоже валгринд ругался. Коллеги-кутишники утверждали, что это нормально и утечка однократная. Попробуйте много раз повторить сигнал и посмотрите увеличится ли утечка.


Название: Re: Утечка в Qt
Отправлено: UVV от Январь 10, 2011, 13:32
Да, вы правы, утечка не увеличивается.


Название: Re: Утечка в Qt
Отправлено: merke от Январь 10, 2011, 13:56
Цитировать
==30266== 120 bytes in 1 blocks are definitely lost in loss record 891 of 1,268
==30266==    at 0x4C9C082: operator new(unsigned int) (vg_replace_malloc.c:214)
==30266==    by 0xA1E91DC: getEngineData(QFontPrivate const*, QFontCache::Key const&) (qfontdatabase.cpp:1002)
==30266==    by 0xA1EE6C0: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1915)
==30266==    by 0xA1C7817: QFontPrivate::engineForScript(int) const (qfont.cpp:270)
==30266==    by 0xA1E387F: QFontMetrics::height() const (qfontmetrics.cpp:329)
==30266==    by 0x8114BDE: HexViewModel::headerData(int, Qt::Orientation, int) const (hexviewmodel.cpp:235)
==30266==    by 0xA5D2B30: QHeaderView::sectionSizeFromContents(int) const (qheaderview.cpp:2544)
==30266==    by 0xA5CC058: QHeaderView::sizeHint() const (qheaderview.cpp:536)
==30266==    by 0xA5F610F: QTableView::updateGeometries() (qtableview.cpp:2024)
==30266==    by 0xA5F5F2F: QTableView::columnCountChanged(int, int) (qtableview.cpp:1999)
==30266==    by 0xA5FAE0E: QTableView::qt_metacall(QMetaObject::Call, int, void**) (moc_qtableview.cpp:140)

Объясните новичку, как вы здесь увидели утечку? Не ругайтесь - я только учусь) ;)


Название: Re: Утечка в Qt
Отправлено: ufna от Январь 10, 2011, 13:58
В самой первой строчке? :)


Название: Re: Утечка в Qt
Отправлено: fuCtor от Январь 12, 2011, 18:42
У кого-нибудь такое есть?
Цитировать
==30266== 120 bytes in 1 blocks are definitely lost in loss record 891 of 1,268
==30266==    at 0x4C9C082: operator new(unsigned int) (vg_replace_malloc.c:214)
==30266==    by 0xA1E91DC: getEngineData(QFontPrivate const*, QFontCache::Key const&) (qfontdatabase.cpp:1002)
==30266==    by 0xA1EE6C0: QFontDatabase::load(QFontPrivate const*, int) (qfontdatabase_x11.cpp:1915)
==30266==    by 0xA1C7817: QFontPrivate::engineForScript(int) const (qfont.cpp:270)
==30266==    by 0xA1E387F: QFontMetrics::height() const (qfontmetrics.cpp:329)
==30266==    by 0x8114BDE: HexViewModel::headerData(int, Qt::Orientation, int) const (hexviewmodel.cpp:235)
==30266==    by 0xA5D2B30: QHeaderView::sectionSizeFromContents(int) const (qheaderview.cpp:2544)
==30266==    by 0xA5CC058: QHeaderView::sizeHint() const (qheaderview.cpp:536)
==30266==    by 0xA5F610F: QTableView::updateGeometries() (qtableview.cpp:2024)
==30266==    by 0xA5F5F2F: QTableView::columnCountChanged(int, int) (qtableview.cpp:1999)
==30266==    by 0xA5FAE0E: QTableView::qt_metacall(QMetaObject::Call, int, void**) (moc_qtableview.cpp:140)

Qt 4.7.1, Linux x86

Шрифтовый кэш заполнился. Веселее когда приходится рисовать тексты, а размер приходится расчитывать. В итоге получаешь приличного такого размера его.