Speicherzugrifsfehler

Alles rund um die Programmierung mit Qt
Antworten
gago
Beiträge: 6
Registriert: 19. Oktober 2004 15:07

Speicherzugrifsfehler

Beitrag 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.
Spring-Daniel
Beiträge: 40
Registriert: 4. Oktober 2004 16:26

Beitrag 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...
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
gago
Beiträge: 6
Registriert: 19. Oktober 2004 15:07

Beitrag 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.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
gago
Beiträge: 6
Registriert: 19. Oktober 2004 15:07

Beitrag 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.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Hi Gago, kein Problem, dafür sind wir ja schließlich da.
mf2
Beiträge: 4
Registriert: 3. Januar 2006 00:17

Beitrag 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?
Antworten