1、
如下一段代码:
QTableWidgetItem *pItem = new QTableWidgetItem;
pItem->setText(strCANID);
ui->tableWidget->setItem(nCount, 0, pItem);
pItem = new QTableWidgetItem;
pItem->setText(strFrameFormat);
ui->tableWidget->setItem(nCount, 1, pItem);
pItem = new QTableWidgetItem;
pItem->setText(strFrameType);
ui->tableWidget->setItem(nCount, 2, pItem);
pItem = new QTableWidgetItem;
pItem->setText(dataLen);
ui->tableWidget->setItem(nCount, 3, pItem);
这段代码所在函数每1s调用一次,所以该函数每1s执行一次。代码中有使用 new 关键字申请堆内存。代码中没有看到 delete 关键字,也就是表示一直没有清理变量,长时间运行是否会出现内存泄漏的问题呢?
2、
Qt帮助文档中对setItem()函数进行了解释,当Item被添加到table中,the table takes the ownership of the Item. 如果setItem()操作的是同一个单元格,之前设置的QTableWidegetItem将会被删除。所以不用担心此时内存泄漏的问题。
但是,如果一直在新增行,并setItem(),则程序所占用的内存肯定是在持续增加的。