Актуализация: Грешката изглежда се генерира от този ред: *line = color;
Получавам следната грешка, но не разбирам откъде може да дойде:
Грешката:
HEAP[testQt.exe]: Heap блок при 0B444FE8, модифициран при 0B44C6B0 след заявения размер от 76c0
Редът, който го генерира:
return QPixmap::fromImage(qimage);
от:
QPixmap Interpolation::getData() {
QPointF pt(0, 0);
QRgb color;
QImage qimage(m_width, m_height, QImage::Format_ARGB32);
qimage.fill(Qt::transparent);
for (int i(0); i < m_height; ++i) {
m_progress->setValue(m_width+i);
QRgb *line = (QRgb *)qimage.scanLine(i);
for (int j(0); j < m_width; ++j) {
pt.setX(j);
pt.setY(i);
line += 1;
if (isInHull(pt)) {
color = colorScale(interp(&pt));
*line = color; //If I remove this part the program won't crash
}
}
}
return QPixmap::fromImage(qimage);
}
Ако помага:
QRgb Interpolation::colorScale(qreal value)
{
int cat;
cat = qFloor(qreal(9)*(value-m_min)/(m_max-m_min));
return m_couleurs[cat];
}
с:
m_couleurs[0] = qRgb(247, 252, 240);
m_couleurs[1] = qRgb(224, 243, 219);
m_couleurs[2] = qRgb(204, 235, 197);
m_couleurs[3] = qRgb(168, 221, 181);
m_couleurs[4] = qRgb(123, 204, 196);
m_couleurs[5] = qRgb(78, 179, 211);
m_couleurs[6] = qRgb(43, 140, 190);
m_couleurs[7] = qRgb(8, 104, 172);
m_couleurs[8] = qRgb(8, 64, 129);
Всеки пример ще бъде оценен.
Редактиране: добавена е пълната функция, в случай че помогне. Edit2: направи кода по-ясен и премахна безполезните части. Edit3: актуализира въпроса.
for (int i(0); i < m_height; ++i)
и завършвайки със съвпадащото}
? Ако грешката изчезне, вероятно там е проблемът. - person Evan Teran   schedule 22.06.2012