公司项目使用了QT的3D模块,当item过多时,会出现crash:
QTBUG-55214 Crash when creating large number of meshes
是由于本身QT对item数量的限制。
qhandlemanagers_p.h文件的第146行:
Q_ASSERT(m_activeEntryCount < qHandle::MaxIndex);
MaxIndex在qhandle_p.h中定义,IndexBits的值为16:
enum {
// Sizes to use for bit fields
IndexBits = INDEXBITS,
CounterBits = 32 - INDEXBITS - 2, // We use 2 bits for book-keeping in QHandleManager
// Sizes to compare against for asserting dereferences
MaxIndex = (1 << IndexBits) - 1,
MaxCounter = (1 << CounterBits) - 1
};
调研模块的时候需要注意:
- 功能;
- 性能;
- BUG情况。