Qt4 QML加载程序内存泄漏?

Qt4 QML加载程序内存泄漏?,qt4,qml,qt-mobility,Qt4,Qml,Qt Mobility,我的应用程序开始消耗大量内存。第一个镜头是MNG动画缓存,但它表明它们只是不共享。 因此,我在constructor/destructor中创建了一个带有调试打印的TestItem,当通过视频停止信号更改其源时,我看到加载程序不工作属性: 导入QtQuick 1.1 导入多媒体工具包1.1 长方形{ id:根 宽度:800 身高:480 录像带{ id:video1 锚定。填充:父级 资料来源:“test.mp4” 顶部:{ loader1.source=“Test2.qml”; } } 装载机

我的应用程序开始消耗大量内存。第一个镜头是MNG动画缓存,但它表明它们只是不共享。 因此,我在constructor/destructor中创建了一个带有调试打印的TestItem,当通过视频停止信号更改其源时,我看到加载程序不工作属性:

导入QtQuick 1.1
导入多媒体工具包1.1
长方形{
id:根
宽度:800
身高:480
录像带{
id:video1
锚定。填充:父级
资料来源:“test.mp4”
顶部:{
loader1.source=“Test2.qml”;
}
}
装载机{
编号:loader1
来源变更:{
调试(“源代码更改为”+源代码)
}
}
鼠耳{
锚定。填充:父级
按下按钮:{
loader1.source=“Test1.qml”;
视频1.播放();
}
}
}
因此,当我单击4次时,会得到如下控制台输出:

TestItem(0x1b4fc00) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
TestItem(0x2047ba0) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x2046720) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2047ba0) 
TestItem(0x2050560) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x204fad0) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2050560) 
TestItem(0x2051e40) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x2051330) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2051e40) 
TestItem(0x2052e90) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
当我关闭我的应用程序时,所有正在创建的对象都将被删除:

~ TestItem(0x1b4fc00) 
~ TestItem(0x2046720) 
~ TestItem(0x204fad0) 
~ TestItem(0x2051330) 
~ TestItem(0x2052e90) 
为什么顶部信号会产生这种行为? 这有什么解决办法吗


使用libqt4声明性(版本:4:4.8.1-0ubuntu4.2)和libdeclarative多媒体(版本:1.2.0-1ubuntu2)在Ubuntu 12.04上进行测试。

当垃圾收集开始时,这些项目将被删除。尝试显式调用sourcechanged上的gc(),看看它是否会产生错误difference@SergioMartins谢谢你的回答,但我两年前需要;-)无论如何,我必须在当前的Qt5.3中检查这种行为。