我在Qt SDK中用C ++动态分配数组内存时遇到了一些问题...这就是我正在做的事情:
int dx = 5;
QPoint * qPoint;
qPoint = new QPoint[dx+1];
然而,当我尝试调试代码时,程序在尝试执行第三行时崩溃了....任何线索?
答案 0 :(得分:5)
如果要正确使用Qt SDK,则必须使用QVector而不是C ++数组或std数组。您可以使用QVector作为指针,因为它在内部动态分配内存并不重要。
例如:
int dx = 5;
QVector<QPoint> points;
points.resize(dx + 1);
你也可以这样做:
QVector<QPoint> * points = new QVector<QPoint>(dx + 1);
如果您想将矢量作为指针。但是Qt使用向量的隐式内存共享,所以你可以在大多数时候使用第一种方法。
http://doc.qt.io/qt-5/implicit-sharing.html#implicit-data-sharing
答案 1 :(得分:0)
你好像在做C ++标准中特别陈述的事情不应该做(动态数组):)在Qt的情况下,你可能想要做的是使用QList。另请参阅有关通用容器的Qt文档:http://doc.qt.io/qt-5/containers.html