• 5293阅读
  • 6回复

最简单的程序,存在内存泄露吗? [复制链接]

上一主题 下一主题
离线conta
 
只看楼主 倒序阅读 楼主  发表于: 2010-06-11
#include <QtGui>


int main(int argc,char* argv[])
{
   QApplication app(argc,argv);

   QWidget* w=new QWidget(0);
   w->show();

   return app.exec();
}



当我点击关闭按钮后,进程就退出,这样存在内存泄露吗?我担心的是,w所指向的内存块没有释放;
离线rockyluo

只看该作者 1楼 发表于: 2010-06-11
你的担心完全正确
这里的确不能new一个指针的
正确用法就是直接造个对象的
QWidget w;
w.show();

                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线conta
只看该作者 2楼 发表于: 2010-06-11
谢谢了
如果改成这样呢?w2的内存块存在内存泄露吗?
我不记得在哪里看到,好像说,指定了父控件,在父控件释放时,就会释放子控件...


#include <QtGui>


int main(int argc,char* argv[])
{
   QApplication app(argc,argv);

   QWidget w1;
  
   QWidget* w2=new QWidget(&w1);
  
   w1->show();

   return app.exec();
}








离线conta
只看该作者 3楼 发表于: 2010-06-11
??是不是我看错了??
离线wato
只看该作者 4楼 发表于: 2010-06-11
进程结束后  操作系统应该会自动回收分配给进程的堆和栈吧?
离线ding404
只看该作者 5楼 发表于: 2010-06-11
w2应该会被w1是释放吧,这样就不会泄露内存了
离线longwenbiao
只看该作者 6楼 发表于: 2010-06-12
new 和 delete 一定配套使用就可以了,对于一次性运行的程序,内存泄露不会有大问题,不过对于那种长期运行的程序,呵呵,还是要考虑清楚的
快速回复
限100 字节
 
上一个 下一个