memory corruption

Alles rund um die Programmierung mit Qt
Antworten
serious_sammy
Beiträge: 30
Registriert: 17. September 2013 16:07

memory corruption

Beitrag 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;
}
Antworten