• 6631阅读
  • 6回复

创建QWidget并Delete后,程序占用内存增加的问题 [复制链接]

上一主题 下一主题
离线yxhappy
 
只看楼主 倒序阅读 楼主  发表于: 2009-12-17
void Managepage::Guidecanvas()
{
    guidecanvas = new guideset_canvas(this);//new 出来一个页面
    guidecanvas->show();
    delete mapcanvas;//删除掉前一个页面
}
我显示一个页面的时候,总是删除前一个页面,但是内存还是随着我点开的页面增多而增加了?请问要怎么才能释放掉内存呢?
离线dinggb
只看该作者 1楼 发表于: 2009-12-17
是不是和删除的先后有关系啊,你试试先删除上一页,再创建新的一页。
应该是对象管理器的事。
离线yxhappy
只看该作者 2楼 发表于: 2009-12-17
呵呵,谢谢楼上,不过这样是肯定不行的,如果先删除前一页的话,就会出现空屏的现象,肯定必须show出下一页才能删除前一页的。不过还是谢谢你!
离线yb824
只看该作者 3楼 发表于: 2009-12-17
这点代码看不出问题
离线shiroki

只看该作者 4楼 发表于: 2009-12-17
都贴出来看看
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线yxhappy
只看该作者 5楼 发表于: 2009-12-18
我调试看了一下,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重新编辑 ]
离线yxhappy
只看该作者 6楼 发表于: 2009-12-18
up!up!
help!help!
快速回复
限100 字节
 
上一个 下一个