我调试看了一下,new第一个页面的时候,内存上升3%,show一下,又上升1%,回到主函数的return a.exec();内存上升9%,第二个页面guidecanvas = new guideset_canvas(this);内存上升2%, delete mapcanvas;删除前一个页面,内存下降1%,但是int guideset_canvas::qt_metacall(QMetaObject::Call _c, int _id, void **_a)这个函数返回的时候,内存又升了1%,很不明白qt的内存方面的问题。我的页面都是用Qt Designer做的,自动生成.ui文件的。所以这个代码还真不好贴呀。哪位可以帮忙说一下可能存在的原因吗?内存一直这样升,在wince上,可是致命的呀!
int main(int argc, char *argv[])
{
NSQTApp a(argc, argv);
Managepage manager(a.The_engine());//页面管理类
manager.MapcanvasPage();//这个函数new出第一个页面
return a.exec();//执行完这一句后,内存上升9%
}
void Managepage::MapcanvasPage()
{
mapcanvas = new NSMapCanvas(this);//new第一个页面,内存上升3%
mapcanvas->setWindowFlags(Qt::FramelessWindowHint);
mapcanvas->setGeometry( 0, 0, 480, 272 );
mapcanvas->show();//内存上升1%
}
void Managepage::Guidecanvas()
{
guidecanvas = new guideset_canvas(this);//new 第二个页面,内存上升2%
guidecanvas->setWindowFlags(Qt::FramelessWindowHint);
guidecanvas->setGeometry( 0, 0, 480, 272 );
guidecanvas->show();
delete mapcanvas;//删除前一个页面,内存下降1%
}
当guidecanvas显示在屏幕上以后内存又上升了1%,也就是相当于只要点一个页面,内存就持续上升
请大家帮帮忙!
[ 此帖被yxhappy在2009-12-18 10:00重新编辑 ]