首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

求内存储器释放方法

2013-03-25 
求内存释放方法。QWidget *dd new QWidget()dd-setAttribute(Qt::WA_DeleteOnClose)dd-resize(this-

求内存释放方法。


         QWidget *dd = new QWidget();
dd->setAttribute(Qt::WA_DeleteOnClose);
dd->resize(this->size());
QPixmap* tempimage = new QPixmap();
QPixmap* tempimage1 = new QPixmap();
*tempimage= QPixmap::grabWidget(this,this->rect());
QIcon *ss= new QIcon(*tempimage);

*tempimage1 = ss->pixmap(tempimage->size(),QIcon::Disabled);
QPalette* newpattele = new QPalette();
*newpattele=dd->palette();
dd->setAutoFillBackground(true);
newpattele->setBrush(QPalette::Background,*tempimage1);
dd->setPalette(*newpattele);
dd->show();
delete tempimage;
delete tempimage1;
delete ss;
delete newpattele;


求方法 我上面的代码中 QPixmap 部分内存释放不了。我做测试,程序的内存将不断增加。如何释放掉QPixmap的内存。我需要用完马上释放,来减小资源压力。大牛们出来教教我。

各位大牛出来指导下吧
[解决办法]
分配在栈上行不 不要new
[解决办法]
我以前写过截图程序 没发现这个函数的不能释放啊
[解决办法]
看了一下觉得你没有用到new出来的对象,你只是想用指针作为句柄来操作你得到的对象。所以你可以只是声明一下指针,并不需要把它new出来。当然这样后面的赋值操作也要做相应的修改。


[解决办法]
同理,QPalette* newpattele = new QPalette();
这个也是不需要new的
引用:
看了一下觉得你没有用到new出来的对象,你只是想用指针作为句柄来操作你得到的对象。所以你可以只是声明一下指针,并不需要把它new出来。当然这样后面的赋值操作也要做相应的修改。

[解决办法]
 试一下小秘书,不错哦。。。[align=center]**********************************************
欢迎使用 CSDN 小秘书
http://blog.csdn.net/whowhen21
**********************************************[/align]
[解决办法]
应该是可以释放的,你可以看一下程序的其他地方有没有问题,或是你调用其他的函数造成的内存泄露,另外你也可以缩小一下问题代码的范围,同时也可以用非常简短的代码测试一下,看时候有问题。

希望能够帮到你!
[解决办法]
使用QPixmap tempimage;不要new,
把QPixmap分配到栈上,不要分配到堆上;
[解决办法]
QPixmap* tempimage1 = new QPixmap();
....    
*tempimage1 = ss->pixmap(tempimage->size(),QIcon::Disabled);
总觉得这么写很别扭。你把它改成:
QPixmap* tempimage1 = new QPixmap( ss->pixmap(tempimage->size(),QIcon::Disabled) );
看看
[解决办法]
 看了一眼代码就感觉有错啊 你那两个tempimage 刚new出来就又指向了其他地址,内存已经丢了啊 怎么释放
[解决办法]
delete顺序改一下。

热点排行