Seite 1 von 1

memory corruption

Verfasst: 23. Dezember 2013 12:25
von serious_sammy
Hallo,
ich habe ein Problem beim erstellen eines QwtPlots. Wenn ich versuche den Speicher für die zweite Kurve zu allokieren bekomme ich einen memory corruption fehler zur Laufzeit.
Bei der ersten Funktioniert es problemlos. :roll:

mainwindow.h

Code: Alles auswählen

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>
#include <QPolygonF>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_spline.h>
#include <qwt_curve_fitter.h>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    QwtPlot *myplot;
    QwtPlotCurve *mycurve;
    QwtPlotCurve *intercurve;
    QPolygonF *uiData;

    int setupPlot();
};
mainwindow.cpp

Code: Alles auswählen

int MainWindow::setupPlot()
{
    //plot
    myplot = new QwtPlot(this);
    myplot->move(QPoint(0,0));
    //myplot->setTitle("Curve");
    myplot->setCanvasBackground(Qt::white);
    myplot->setFixedSize(800,415);
    uiData = new QPolygonF;

    //uiCurve
    mycurve = new QwtPlotCurve();
    mycurve->setTitle("Data");
    mycurve->setPen(QPen(Qt::black));
    mycurve->setRenderHint(QwtPlotItem::RenderAntialiased, true);
    mycurve->setSamples(*uiData);
    mycurve->attach(myplot);

    //interpolarised curve
    intercurve = new QwtPlotCurve();   <------------------Hier ist der Fehler
    intercurve->setTitle("interpolarised");
    intercurve->setPen(QPen(Qt::red));

    intercurve->setCurveAttribute(QwtPlotCurve::Fitted, true);
    QwtSplineCurveFitter *fitter = new QwtSplineCurveFitter();
    fitter->setFitMode(QwtSplineCurveFitter::ParametricSpline);
    fitter->setSplineSize(200);
    intercurve->setCurveFitter(fitter);

    intercurve->setSamples(*uiData);
    intercurve->attach(myplot);

    // axis

    QFont font;
    font.setPixelSize(10);

    QwtText axisTitleX;
    QwtText axisTitleY;

    axisTitleX.setText("temperature in °C");
    axisTitleX.setFont(font);

    axisTitleY.setText("dose in nA");
    axisTitleY.setFont(font);
    myplot->setAxisTitle(QwtPlot::xBottom, axisTitleX);
    myplot->setAxisTitle(QwtPlot::yLeft,axisTitleY);

    //show Plot
    myplot->show();
    myplot->setAutoReplot(true);

    return 0;
}