nachdem ich einige Header meines Projekts entschlackt habe schlugen plötzlich meine Unit-Tests fehl. Allerdings anders als erwartet mit einem segmentation fault.
Der SIGSEGV wird beim Aufruf der Destruktoren und durch QString (genauer qatomic_i386.h) ausgeloest.
Allerdings verstehe ich bisher nicht warum.
Daher habe das ganze mal auf ein kleines Beispielprogramm heruntergebrochen.
Code: Alles auswählen
#include <QString>
#include <QList>
struct FooData {
QString m_str;
};
class Foo {
public:
Foo() : d(new FooData) { }
~Foo() { delete d; }
private:
FooData *d;
};
struct BarData {
QList<Foo> m_foolist;
};
class Bar {
public:
Bar() : d(new BarData()) { }
~Bar() { delete d; }
void addFoo(const Foo &f) {
d->m_foolist.append(f);
}
private:
BarData *d;
};
int main() {
Foo f1;
Bar b;
b.addFoo(f1);
};
Kann mir jemand erklaeren was hier falsch laeuft?
MfG,
Hilefoks
P.S: Ich verwende Qt 4.4.0 auf Linux.