Absturz bei Deklaration von QStandardItemModel

Alles rund um die Programmierung mit Qt
Antworten
XL
Beiträge: 18
Registriert: 1. Oktober 2010 19:14

Absturz bei Deklaration von QStandardItemModel

Beitrag von XL »

Hallo allerseits,

ich habe ein Problem bei der Deklaration von QStandardItemModel (oder anderen Modellen). Sobald ich die Deklaration
QStandardItemModel *modelAnalysisCurves;
im Header meiner MainWindow-Klasse habe, kompiliert zwar alles fehlerfrei, aber die exe startet nicht, sondern liefert nur die nichtssagende Fehlermeldung "... hat ein Problem festgestellt und muss beendet werden." Wenn
QStandardItemModel *modelAnalysisCurves;
erst im Konstruktor von MainWindowFastScan steht, dann funktioniert alles. Ich hätte modelAnalysisCurve aber gerne klassenweit verfügbar.

Kann jemand helfen?
Ich bin für jeden Hinweis dankbar.

Code: Alles auswählen

#ifndef MAINWINDOWFASTSCAN_H
#define MAINWINDOWFASTSCAN_H

// ... noch mehr includes ...
#include <QStandardItemModel>

namespace Ui {
    class MainWindowFastScan;
}

class MainWindowFastScan : public QMainWindow
{
	Q_OBJECT

public:
	explicit MainWindowFastScan(QWidget *parent = 0);
	~MainWindowFastScan();
private:
	// ... noch mehr members ...
	QStandardItemModel *modelAnalysisCurves; // <- diese Zeile bringt die exe zum Absturz
};

#endif // MAINWINDOWFASTSCAN_H
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Und was sagt der Debugger dazu?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Und wann/wie initialisierst du das model?
XL
Beiträge: 18
Registriert: 1. Oktober 2010 19:14

Beitrag von XL »

Schönen Dank erstmal für's Antworten.

Debugger ... hm, kann ich erst übermorgen wieder testen.

Ich initialisiere gar nichts weiter, diese Zeile allein führt schon zum Absturz. Wenn sie an anderer Stelle steht, z.B. in MainWindowFastScan::MainWindowFastScan(QWidget *parent = 0), funktioniert allerdings alles ganz normal.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Sorry aber das glauben wir Dir nicht. Also zeig uns ein minimales Beispiel...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
XL
Beiträge: 18
Registriert: 1. Oktober 2010 19:14

Beitrag von XL »

So, Rückmeldung von mir: Nachdem ihr mir Gewissheit verschafft habt, dass es eigentlich nicht allein an QStandardItemModel *modelAnalysisCurves; liegen kann und ein "(zu minimales) Minimalbeispiel" auch fehlerfrei läuft, ist die Erkenntnis nun folgende:

Ich habe noch eine eigene Klasse, sagen wir MyClass, die ich in MainWindowFastScan verwende.
Nun kommt es auf die Reihenfolge an:

Code: Alles auswählen

MyClass meineKlasse;
QStandardItemModel *modelAnalysisCurves;
stürzt ab, während

Code: Alles auswählen

QStandardItemModel *modelAnalysisCurves;
MyClass meineKlasse;
fehlerfrei läuft.

Das ist etwas unangenehm, weil ich nicht verstehe warum das so ist, aber immerhin habe ich erstmal eine Lösung. Sollte ich noch weitere Erkenntnisse erlangen und sie für interessant genug halten, dann poste ich wieder.

Ach ja, mit dem Debugger habe ich bisher quasi gar nicht gearbeitet und ich verstehe nicht ganz was er mir sagen will ... "The inferior stopped because it received a signal from the Operating System" ...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MyClass macht irgendwas im Speicher - z.B. ein memset mit einem zu kleinen Speicherbereich oder ähnliches.

/Edit: Es kann auch sein dass es zwei MyClass - Header gibt und der eine etwas mehr Speicher 'anfordert' als der andere - d.h. ein und dieselbe Klasse nur unterschiedliche Members.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
XL
Beiträge: 18
Registriert: 1. Oktober 2010 19:14

Beitrag von XL »

Hm, danke für die Hinweise, wüsste jetzt aber gerade nicht wo das passieren sollte.
Vielleicht suche ich aber bei Gelegenheit und gebe dann evtl. bescheid.

Dafür hab ich nun eine neue grundsätzlichere Frage, siehe anderer Thread.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

valgrind is your friend ... :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
XL
Beiträge: 18
Registriert: 1. Oktober 2010 19:14

Beitrag von XL »

Könnte valgrind auch unter Windows mein Freund sein?

Der Debugger hat doch noch dezente Hinweise gegeben wo ich grob suchen muss.
MyClass hat tatsächlich was im Speicher gemacht. Ein paar unsaubere Array-Grenzen.
Der Zusammenhang des Fehlers mit QStandardItemModel (bzw. der Reihenfolge der Anweisungen) war damit eher zufällig.

Problem ist also gelöst, danke für die Hinweise.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Windows und valgrind sind keine Freunde :)
Array-Zugriff? Wir sind hier in C++ da gibts für sowas std- und auch Qt-Container...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten