c++: EXC_BAD_ACCESS bei fkt-aufruf anderer klassen

  1. grizto

    grizto Thread StarterMacUser Mitglied

    Mitglied seit:
    27.11.2004
    Beiträge:
    398
    Zustimmungen:
    9
    Morgen

    Ich hab ein seltsames Problem, mit dem ich nicht weiterkomme, vor allem wenn man als sonst Java-progger c++ macht, und aufeinmal kommt der speicher ins spiel ;)

    Wenn in unserem Schachprogramm (rund 32 klassen, qt, opengl, openal) eine Klasse ein Funktion einer anderen Klasse, also zur Laufzeit eher eines anderen objekts aufruft, beendet sich die app und der bericht zeigt follgendes

    anscheinend will er auf einen speicherbereich zugreifen, auf den er nich zugreifen darf.
    Das geschieht zBsp, wenn unsere Kontrollklasse, ein Textlabel der GUI ändern will. Aber die selbe kotntrollklasse kann ein Textfeld in der GUI klasse problemlos ändern.
    ebenso stürzt es ab, wenn die Kontrollklasse auf die Schnittstellenklasse der KI zugreift
    Schmeisse ich die Labeländerung sowie den zugriff auf die Schnittstellenklasse raus (was den spielspaß mindert ;) ) funktioniert alles.


    Das Programm läuft ohne Probleme unter Linux (zum glück ist das für den Prof entscheidend) aber ich hätte es nunmal gerne auch bei mir zum laufen gebracht.
     
    grizto, 28.03.2007
  2. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Erste Frage: Rufst Du eine KLASSENmethode, oder eine INSTANZmethode auf?

    Wenn es eine Instanzmethode ist, dann ist der übliche Fehler, dass das Objekt nicht (mehr) existiert, oder der Pointer zu dem Objekt falsch gesetzt ist.

    Alex
     
    below, 28.03.2007
  3. grizto

    grizto Thread StarterMacUser Mitglied

    Mitglied seit:
    27.11.2004
    Beiträge:
    398
    Zustimmungen:
    9
    ja, sorry etwas missverständlich ausgedrückt

    Wir haben das ganze als Singleton realisiert, sprich, die funktionen werden immer über getInstance aufgerufen.
    Also werden schon Instanzmethoden aufgerufen, allerdings einer statischen instanz, und eine null pointer exception kann eigentlich nich kommen, denn falls das objekt nicht mehr besteht, wird ja ein neues erstellt, oder?

    der klassenentwurf, und auch die entscheidung das singleton pattern zu verwenden, stammt nicht von mir :)
     
    grizto, 28.03.2007
  4. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Gut, aber ich würde mir mal genau ankucken was da in dem Pointer auf Dein Singleton Objekt drinsteht.

    Alex
     
    below, 28.03.2007
  5. grizto

    grizto Thread StarterMacUser Mitglied

    Mitglied seit:
    27.11.2004
    Beiträge:
    398
    Zustimmungen:
    9
    ok, werd ich tun

    was das ganze seltsam macht, ist, das ein methoden zugriff auf das objekt geht, und ein anderer nicht.

    ich mochte c++ noch nie ;)
     
    grizto, 28.03.2007
  6. autoexec.bat

    autoexec.batMacUser Mitglied

    Mitglied seit:
    21.01.2005
    Beiträge:
    2.113
    Zustimmungen:
    20
    Ohne Code kann man da natürlich schlecht was sagen, aber hast du das Programm denn mal durch den Debugger gejagt? Damit lassen sich solche Fehler doch meißtens schnell finden. ;)
     
    autoexec.bat, 28.03.2007
  7. grizto

    grizto Thread StarterMacUser Mitglied

    Mitglied seit:
    27.11.2004
    Beiträge:
    398
    Zustimmungen:
    9
    wenn ich später zuhause bin, werde ich mal nach der anleitung http://qtnode.net/wiki/Qt4_with_Xcode das project versuchen nach XCode zu verfrachten, um mal debuggen zu können
    auf dem ibook hier wollte er das nicht machen ("zu alte xcode version...")

    ich halte euch auf dem laufenden, auch wenn es euch nich interessiert ;) :p
     
    grizto, 28.03.2007
  8. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Wichtig ist nur mit -g zu kompilieren, dann sind symbole drin.

    Dann geht es auch mit Kommandozeilen gdb. Old School rules.

    Alex
     
    below, 28.03.2007
  9. grizto

    grizto Thread StarterMacUser Mitglied

    Mitglied seit:
    27.11.2004
    Beiträge:
    398
    Zustimmungen:
    9
    der xcode import hatte mit dem neuerem xcode auf dem imac direkt geklappt (wirklich super, gut dass ich das jetzt merke, nachdem das projekt vorbei ist ;) )

    Das Prog hatte intesive Probleme, beim zugreifen auf die Datenelemente der Singleton Objekte.
    Das ich dieses Singleton-Kram eh nich mochte, hab ich das alles rausgeworfen und ordentlich Objekte gebaut, und die an die gebrauchten Stellen weitergegeben.
    Und siehe da, es funzt.

    also, wie vermutet, die Pointer zeigten ins nirgendwo.
    danke für die umfangreiche hilfe :)
    sogar die libexecstream, die einer von uns verwendet hat,um mit der KI zu kommunizieren funktioniert tadelos, unix sei dank :)

    MfG

    griz
     
    grizto, 28.03.2007
  10. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Das tut mir wirklich leid. Rummst, knackst oder wummert es vielleicht auch?

    Alex
     
    below, 28.03.2007
Die Seite wird geladen...
Ähnliche Themen - c++ EXC_BAD_ACCESS bei
  1. Wolfseye
    Antworten:
    16
    Aufrufe:
    310
  2. Massaguana
    Antworten:
    9
    Aufrufe:
    221
    Mankind75
    19.06.2017
  3. GeFa
    Antworten:
    9
    Aufrufe:
    601
    Gondomir
    15.08.2016
  4. Saloice
    Antworten:
    4
    Aufrufe:
    577
  5. ZoliTeglas
    Antworten:
    5
    Aufrufe:
    384
    mrthomasd
    13.10.2015