Seite 1 von 1

Speicherzugrifsfehler

Verfasst: 14. Januar 2005 11:40
von gago
Hallo Leute,

ich habe ein QDialog (unter QT-Designer) mit mehrere Objekte (Knöpfe, Dials usw. ) und es funktioneirt problemlos. Wenn ich aber 2 Knöpfe mehr einfüge, bekomme ich dann ein Speicherzugrifsfehler. Die Application funktioneirt auch einwand frei. Nur wenn ich dieses Fenster aufrufe bekomme ich dann den Fehler. Es liegt wahrscheinlich daran , dass es ein Zuordnungsproblem gibt. Leider habe ich aber keine Ahnung wo es auftaucht. Kann jemand vielleicht mir helfen?

Gruß,

Gago.

Verfasst: 14. Januar 2005 12:00
von Spring-Daniel
Debugger sind ein prima Werkzeug, um Speicherzugriffsfehler zu lokalisieren - Solltest du unter Linux oder anderen Unix-Artigen OS'en arbeiten, versuchs doch mal mit gdb.

Ansonsten hast du fast ein bisschen zu wenig Informationen gegeben, um mehr sagen zu koennen...

Verfasst: 14. Januar 2005 13:20
von FlorianBecker
Also aus Erfahrung würde ich behaupten, das du einen Zeiger aufrufst, bevor dieser definiert/erstellt wurde.

Ansonsten wie Spring-Daniel sagte:
gdb programm
gdb> run
--> Hier Speicherzugriffsfehler
gdb> back
--> Hier fast ziemlich genaue localisierung des Absturzes.

Und dann mal zusammen mit deinem Code posten, ich bin sicher das das kurz und schmerzlos zu lösen ist.

Verfasst: 14. Januar 2005 15:04
von gago
Hi,

diese sind die Fehler. Ich vermute, dass irgendwas bei den Aufruf der Bibliothek nicht stimmt. Habe ich da recht?


Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 4000)]
0x00000002 in ?? ()
(gdb) back
#0 0x00000002 in ?? ()
#1 0x402754f6 in QApplication::sendPostedEvents(QObject*, int) ()
from /usr/lib/qt3/lib/libqt-mt.so.3
#2 0x40275376 in QApplication::sendPostedEvents() ()
from /usr/lib/qt3/lib/libqt-mt.so.3
#3 0x4021bd9d in QEventLoop::processEvents(unsigned) ()
from /usr/lib/qt3/lib/libqt-mt.so.3
#4 0x40288980 in QEventLoop::enterLoop() ()
from /usr/lib/qt3/lib/libqt-mt.so.3
#5 0x40288876 in QEventLoop::exec() () from /usr/lib/qt3/lib/libqt-mt.so.3
#6 0x4027496f in QApplication::exec() () from /usr/lib/qt3/lib/libqt-mt.so.3
#7 0x0805221f in main ()

Code: Aufrufe des Fensters

void idtLab::openPanel() {
formManPanel *formMan = new formManPanel( this, "", TRUE );
formMan->show();
}

Vielen Dank für Ihre Bemühungen.

Verfasst: 14. Januar 2005 15:41
von FlorianBecker
Nein, hast du nicht.

Poste mal bitte mehr Code, weil anhand von diesem Aufruf kann ich dir so gar nix sagen.

Kommt auch immer drauf an, wann er aufgerufen wird. Es kann sich ja nicht um allzuviel Code handeln, oder? Wenn es nur ein Widget mit 2 eignen Buttons ist. Poste mal den Constructor.

Verfasst: 14. Januar 2005 16:13
von gago
Es handelt sich nicht nur um ein Widget, sondern um eine große Application. Deswegen kann ich nicht die code so einfach mailen. Außerdem ist das Problem nicht mehr vorhanden. Leider kann ich aber nicht ganz genau sagen wo das Problem war. Sorry das ich eure Zeit genommen habe.

Gruß,

Gago.

Verfasst: 14. Januar 2005 16:39
von FlorianBecker
Hi Gago, kein Problem, dafür sind wir ja schließlich da.

Verfasst: 3. Januar 2006 00:24
von mf2
Hey, genau das Problem habe ich auch!
Ich verwende den Qt Designer als Entwicklungsumgebung; wenn ich etwas an den Fenstern verändere, verabschiedet sich das Programm mit einem Speicherzugriffsfehler, wenn es versucht, das veränderte Fenster zu erstellen.

Mein Programm ist der KVideoencoder; den Quelltext erhaltet ihr auf http://de.kde-apps.org/content/download ... 31385&id=2

Das Problem sitzt eindeutig hier:

Code: Alles auswählen

(...)
VideoFilterWindow *VFilterWnd;
VFilterWnd = new VideoFilterWindow();
if( VFilterWnd->exec() == QDialog::Accepted )
{
(...)
Nachdem ich das Fenster mit new erstellt habe, kann trotzdem nicht darauf zugriffen werden. Woran kann das liegen?