如何在Qt C ++中为数组动态分配内存?

时间:2010-06-14 10:02:21

标签: c++ qt

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

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

然而,当我尝试调试代码时,程序在尝试执行第三行时崩溃了....任何线索?

2 个答案:

答案 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