Сбой: это может быть связано с повреждением кучи

Я использую qwt5 в своем плагине с qgis 2.8.1 ((версия 32-разрядная), которая использует qwt6). Когда я запускаю свою программу C ++, она вылетает с этой ошибкой:

введите описание изображения здесь

проблема возникла в этой функции (работает в режиме отладки):

//delete all the items attached to QwtPlot
const QwtPlotItemList &list = m_pPlot->itemList ();
qDeleteAll(list.begin(), list.end());

Я заменил эту функцию на:

QwtPlotItemIterator it = list.begin();
while ( it != list.end() )
{
QwtPlotItem *item = *it;
++it; // increment before removing item from the list
item->attach(NULL);
delete item;
}

но тот же сбой происходит снова в этой инструкции:

delete item;

Пожалуйста, у вас есть представление об этой проблеме?

0

Решение

От Руководство пользователя Qwt

QwtPlotItemList всех прикрепленных элементов графика.

Будьте осторожны при итерации этих списков, так как удаление / отсоединение элемента сделает недействительным итератор. Вместо этого вы можете поместить указатели на объекты, которые должны быть удалены, в список удаления и проследить этот список позже.

Акцент мой.

3

Другие решения

Переехать delete item вне петли. Теперь вы удаляете item многократно.

-2

По вопросам рекламы [email protected]