Как мне динамически выделить память для массивов в Qt C ++? - PullRequest
2 голосов
/ 14 июня 2010

У меня есть некоторые проблемы с динамическим выделением памяти для массива в C ++ в Qt SDK ... Вот что я делаю:

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

Однако когда я пытаюсь отладить кодпрограмма просто падает, когда пытается выполнить третью строку .... какие-либо подсказки?

Ответы [ 2 ]

5 голосов
/ 14 июня 2010

Если вы хотите использовать 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

0 голосов
/ 14 июня 2010

Похоже, вы делаете что-то, что конкретно указано в стандарте C ++, не должно быть сделано (динамические массивы) :) В случае с Qt вы, вероятно, захотите сделать это использовать QList.Смотрите также документацию Qt об универсальных контейнерах: http://doc.qt.io/qt-5/containers.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...