我在Qt SDK中的C++中为数组动态分配内存时遇到一些问题...这是因为我正在做的事情:

int dx = 5;
QPoint * qPoint;
qPoint = new QPoint[dx+1];

但是,当我尝试调试代码时,当它尝试执行第三行时,程序只是崩溃了....任何线索?

最佳答案

如果要正确使用Qt SDK,则必须使用QVector而不是C++数组或std数组。您可以使用QVector作为指针,也可以不使用,因为它在内部动态分配内存,所以这并不重要。

例如:

int dx = 5;

QVector<QPoint> points;

points.resize(dx + 1);

您也可以这样做:
QVector<QPoint> * points = new QVector<QPoint>(dx + 1);

如果您想将 vector 用作指针。但是Qt对 vector 使用隐式内存共享,因此您通常可以使用第一种方法。

http://doc.qt.io/qt-5/implicit-sharing.html#implicit-data-sharing

10-07 22:57