关于QTableWidget的item所占内存的释放问题

本文探讨了QTableWidget在处理大量数据时如何有效地释放内存,以避免内存泄漏。通过实验验证,clearContents()方法能够成功释放QTableWidgetItem的内存。此外,还提供了另一种逐个删除item的方法,虽然效率较低,但在某些情况下也可使用。
摘要由CSDN通过智能技术生成

关于QTableWidget中的数量众多的item所占内存比较多,用完要释放的问题。

现在有两个问题:

1 是什么时候释放?

2 如何释放

我们先看第一个问题,因为我现在的程序里面是定期刷新table,每次加载大量的数据,所以如果不清除之前的内存,就会使内存一直申请得不到释放最终导致内存泄露。当次显示完就释放显然不合适,因为item被delete掉后表中的内容就也不见了,因为指向的内存块区域的值给清除了。那么我们很容易想到,应该在下次刷新时清除上次申请的内存。

2 如何释放

之前在QT中文论坛上,搜索以前的记录看到有人问过,QTableWidget的clearContents是否可以清除QTableWidgetItem所申请的内存,有人回答可以。但是否可以,没测过,我对此也表怀疑。今天我实际测了一下,证明确实是可以释放的。下面贴下我的测试过程:

思路:启动一个简单GUI程序,此时开任务管理器看内存占用。然后点击一个按钮后,生成一些item,并添加到table中,此时再看内存占用。再点击另一个按钮,调用clearContentes,看增加的内存是否被释放掉。

代码:

void TestClearContents::on_pushButton_clicked()

{

ui.tableWidget->setRowCount(100);

ui.tableWidget->setColumnCount(500);

for (int i = 0;i < 100;i++)

{

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值