new出来的QTableWidgetitem内存泄露问题

Qt新手 2014-04-04 01:55:34
每次切换显示的tablewidget时都new出大量的QTablewidgetitem,这些new出来的QTableWidgetitem在调用tablewidget->clear();时会自己释放吗?如果不会释放怎么解决内存泄露问题呢,有好的方法吗?
...全文
2740 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
每件事 2015-07-09
  • 打赏
  • 举报
回复
clear 没有删除的功能
donwmufromdying 2015-07-02
  • 打赏
  • 举报
回复
自己实验一下就清楚了,只要不是游离的item都回在适当的时候自动被销毁的。不用你担心
LiKG 2015-07-01
  • 打赏
  • 举报
回复 1
我也有一样的疑惑,一直在想办法delete掉,看了这帖子后终于不担心了,感谢楼上各位!!!!
791787860 2015-06-26
  • 打赏
  • 举报
回复 2
我按照9楼的方式做了, table的同一个地方被重新setItem的时候,原来的item会释放掉空间;当调用clearContents是会释放表里的所有item。
yyxmm 2015-03-27
  • 打赏
  • 举报
回复
看一下clear的源码就知道了,Qt有自己去delete
wjcapple 2015-03-26
  • 打赏
  • 举报
回复
会自己释放的。我自己写了一个类继承QTableWidgetItem,然后定义一个析构函数。按照正常方式使用,调用tablewidget->clea()进入自己编写的item类里面,由此可以推断,调用clear,可以释放内存。如果不调用clear,在parent类析构时,也会释放。
qq252503049 2014-04-16
  • 打赏
  • 举报
回复
qt自己删除是发生在析构的时候,等到那时候内存早就堆起了。4楼是正确方法
fearlazy 2014-04-12
  • 打赏
  • 举报
回复
QTableWidget setItem后就会进行管理了。还有你为什么每次都要重新new呢? (清醒不易)
  • 打赏
  • 举报
回复 1
继承自QObject的资料 基本不用管理,数据buff的要new delete
tracybochen 2014-04-09
  • 打赏
  • 举报
回复
做出判断是否存在,再去处理。
客家野夫 2014-04-09
  • 打赏
  • 举报
回复
new出来的QTableWidgetItem,比如下面代码:

//第一步
QTableWidgetItem* item = new QTableWidgetItem(this);//new item对象

//第二步
tableWidget->setItem(0, 0, item);  //将item设置在tableWidget下

//第三步
delete item;  //删除item对象

//第四步
QTableWidgetItem* my_item = tableWidget->item(0,0); //这里程序崩溃,因为tableWidget中0,0位置的item对象已经被删除。
 
如楼上所说,item指针就归tableWidget(Qt里面的parent对象)管理,如果delete item;后面再使用该item时,内存泄漏。 解决办法是不要第三步代码,由tableWidget去删除。 Qt里面的parent机制,需要去看Qt的详细文档。
尘中远 2014-04-08
  • 打赏
  • 举报
回复 1
只要QTablewidgetitem设置到QTableWidget里面,QTableWidget就会自动管理,在重新设置或者删除时会把原来的delete掉,但是你没有设置进QTableWidget里它就会内存泄露。如果你进行多次删除,程序会奔溃的,Qt里面几乎都不需要delete,特别是继承于QObject的类都可以实现父子级自动删除
ying_593254979 2014-04-05
  • 打赏
  • 举报
回复
可以判断一下。如果存在就不new了。不存在再new。 最好一下子全部new出来,然后重新set。
accsoar 2014-04-04
  • 打赏
  • 举报
回复
手动delete 之前new出来的QTablewidgetitem,clear()不会delete他们的 好像是酱紫

16,225

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧