Bloc de segment modifié passé taille demandée

Mise à jour : L'erreur semble être générées par cette ligne: *ligne = couleur;

J'obtiens l'erreur suivante mais je ne comprends pas d'où ça peut venir de:

L'erreur:

SEGMENT[testQt.exe]:
Bloc de segment à 0B444FE8 modifiées à 0B44C6B0 passé demandé la taille de 76c0

La ligne qui le génère:

return QPixmap::fromImage(qimage);

À partir de:

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);
}

Si cela aide:

QRgb Interpolation::colorScale(qreal value)
{
    int cat;
    cat = qFloor(qreal(9)*(value-m_min)/(m_max-m_min));

    return m_couleurs[cat];
}

avec:

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);

Tout le plomb serait appréciée.

Edit: ajout de la fonction complète dans les cas où il permet de.
Edit2: fait le code plus clair et enlevé la partie inutiles.
Edit3: mise à jour de la question.

  • Rien ne saute, mais il ya certaines choses que vous pouvez faire pour le réduire. L'erreur se produire si vous commentez l'ensemble de la deuxième boucle? (en commençant par for (int i(0); i < m_height; ++i) et se terminant avec la mise en correspondance }? Si l'erreur disparaît, alors que c'est probablement là que le problème est.
  • le problème ne semble pas s'en aller si je supprime cette partie. Je vais mettre à jour mon premier post.
  • Est-ce cast juridique? QRgb *ligne = (QRgb *)qimage.scanLine(i); qt-project.org/doc/qt-4.8/qimage.html#scanLine scanLine retour d'un unsigned char, et vous êtes le jetant dans un unsigned integer doc.qt.nokia.com/4.7-snapshot/qcolor.html#QRgb-typedef
InformationsquelleAutor Leo | 2012-06-22