Я использую 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;
Пожалуйста, у вас есть представление об этой проблеме?
От Руководство пользователя Qwt
QwtPlotItemList всех прикрепленных элементов графика.
Будьте осторожны при итерации этих списков, так как удаление / отсоединение элемента сделает недействительным итератор. Вместо этого вы можете поместить указатели на объекты, которые должны быть удалены, в список удаления и проследить этот список позже.
Акцент мой.
Переехать delete item
вне петли. Теперь вы удаляете item
многократно.