我的QMainWindow中存在一个QTableWidget,出于省事,我在往其中添加数据时创建了一个QTableWidgetItem数组,然后设置好数组内容后准备添加成QTableWidget的一行。
QTableWidgetItem* item = new QTableWidgetItem[5];
for (int i = 0; i < 5; i++) {
item[i].setText("90");
ui.tableWidget->setItem(0, i, item + i);
}
它在显示上是没有问题的。这是复现测试的截图
但是它在结束时进行堆检查报异常_CrtlsValidHeapPointer(block)
期间辗转多个重构了多个组件,最后定位是创建数组的问题。。。(很崩溃,骂的很脏)
把代码改成这样就没问题了。
QTableWidgetItem* item[5];
for (int i = 0; i < 5; i++) {
item[i] = new QTableWidgetItem;
item[i]->setText("90");
ui.tableWidget->setItem(0, i, item[i]);
}
很奇怪的是创建数组会有问题,但是使用数组指针挨个创建就没有问题,本猿表示很迷惑。至于具体什么问题小白表示没法深究了,如果有大佬感兴趣,可以为大伙指点一下[期待脸]。
最后我的qt版本是5.15.2