求内存释放方法。该如何解决
求内存释放方法。
求方法 我上面的代码中 QPixmap 部分内存释放不了。我做测试,程序的内存将不断增加。如何释放掉QPixmap的内存。我需要用完马上释放,来减小资源压力。大牛们出来教教我。
各位大牛出来指导下吧
------解决方案--------------------
分配在栈上行不 不要new
------解决方案--------------------
我以前写过截图程序 没发现这个函数的不能释放啊
------解决方案--------------------
看了一下觉得你没有用到new出来的对象,你只是想用指针作为句柄来操作你得到的对象。所以你可以只是声明一下指针,并不需要把它new出来。当然这样后面的赋值操作也要做相应的修改。
------解决方案--------------------
同理,QPalette* newpattele = new QPalette();
这个也是不需要new的
------解决方案--------------------
试一下小秘书,不错哦。。。**********************************************
欢迎使用 **** 小秘书
http://blog.****.net/whowhen21
**********************************************
------解决方案--------------------
应该是可以释放的,你可以看一下程序的其他地方有没有问题,或是你调用其他的函数造成的内存泄露,另外你也可以缩小一下问题代码的范围,同时也可以用非常简短的代码测试一下,看时候有问题。
希望能够帮到你!
------解决方案--------------------
使用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顺序改一下。
- C/C++ code
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的
------解决方案--------------------
试一下小秘书,不错哦。。。**********************************************
欢迎使用 **** 小秘书
http://blog.****.net/whowhen21
**********************************************
------解决方案--------------------
应该是可以释放的,你可以看一下程序的其他地方有没有问题,或是你调用其他的函数造成的内存泄露,另外你也可以缩小一下问题代码的范围,同时也可以用非常简短的代码测试一下,看时候有问题。
希望能够帮到你!
------解决方案--------------------
使用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顺序改一下。