1.下面代码debug模式正常,release模式崩溃在setModel这里
QVariantListListModel *md = new QVariantListListModel(this);
ui->tableView->setModel(md);
md->setVariantListListPtr(&m_datas);
ui->tableView->resizeColumnsToContents();
使用windbg获取异常在QFileSystemModel:
CONTEXT: (.ecxr)
eax=00000000 ebx=64695751 ecx=00000000 edx=00000000 esi=06322068 edi=06322068
eip=58c5e1ad esp=008ffa30 ebp=64695750 iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00210206
Qt5Widgets!QFileSystemModel::qt_static_metacall+0x38d:
58c5e1ad 894804 mov dword ptr [eax+4],ecx ds:002b:00000004=????????
Resetting default scope
EXCEPTION_RECORD: (.exr -1)
ExceptionAddress: 58c5e1ad (Qt5Widgets!QFileSystemModel::qt_static_metacall+0x0000038d)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000001
Parameter[1]: 00000004
Attempt to write to address 00000004
WRONG_SYMBOLS_TIMESTAMP: cfd48485
WRONG_SYMBOLS_SIZE: 1af000
怀疑是new出来的model在设置的时候越界了,详细问题得后面看汇编在具体分析;
解决方法:改
new QVariantListListModel(this);
为全局的
QVariantListListModel md;
解决,有知道原因的希望大佬不吝赐教。