Pimpl Idiom -> SIGSEGV und/oder SIGABRT Problem
Verfasst: 29. Juni 2008 14:04
Moin,
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.
Kommentiere ich in FooData den QString aus, so erhalte ich keinen SIGSEGV sondern einen SIGABRT.
Kann mir jemand erklaeren was hier falsch laeuft?
MfG,
Hilefoks
P.S: Ich verwende Qt 4.4.0 auf Linux.
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.