Подскажите пожалуйста что не так?
Взял пример из assistant. Написал в конструкторе класса
Phonon::MediaObject *music = Phonon::createPlayer(Phonon::MusicCategory, Phonon::MediaSource("G:/1.mp3"));
music->play();
void MediaNodePrivate::deleteBackendObject()
{
if (m_backendObject && aboutToDeleteBackendObject()) {
delete m_backendObject;
m_backendObject = 0;
}
}
MediaNodePrivate
это что за класс? случаем не наследник QObject ???
Если у него есть хозяин то при выходе из программы если удаляются объекты, то может хозяин повторно пытается освободить уже свободную память?
зачем вообще его удалять?
Разобрался) Если кому интересно, ща расскажу.
Блин, матерился почем свет стоит.. 3 часа угробил ) но понял в чем фишка.. Вобщем, я посмотрел адреса указателей (m_backendObject и его parent-a) в момент создания... а потом в момент удаления.. Они почему-то оказались разные. Соответсвенно первая мысль была что их кто-то или что-то затирает. И причем происходит этот в момент выхода, т.к. музыка-то играет "до последнего". Поставил брэйкпоинт в деструктор класса и в функцию удаления этого backendObject, думаю может что увижу... Каково же было мое удивление, когда я не провалился по этому брэйкпоинту в моем деструкторе и попал почему-то сразу к удалению backendObject (которое как я понимаю должно происходить уже после того, как я выйду из деструктора, потому что QT удаляет все созданные объекты-наследники от QObject уже при выходе из eventLoop-а). Причем этот мой класс - наследник от QMainWidget (тут мне сразу стало понятно почему не вызываются деструкторы самописных кнопок, о чем я тут недавно спрашивал). Долго не мог понять что за фигня... В конце концов выяснил (точнее вспомнил), что я запретил выход из программы кроме как по нажатию кнопки "выйти". А в ней стоял вызов exit(0). Сунулся в assistant... читал-читал нашел интересное:
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)