Programm bricht ab [gelöst...]



  • In der letzten Zeit programmiere ich eine Netzwerkengine in C++.
    Das Problem ist, ich habe eine abstrakte Klasse erstellt, von der der Nutzer dann für CallBacks seine eigene Klasse ableitet und an die Engine als Pointer weitergibt.
    Nur leider bricht das Programm immer ab, wenn die Dll eine Funktion der Callbackklasse aufgerufen hat (Am Ende der Funktion!).

    Hier meine Basisklasse:

    class INetClientCBInterface
    
    {
    
    public:
    
                virtual bool incomingConnection(void) = 0;
    
                virtual void connectionEstablished(CConnection *connection) = 0;
    
                virtual void broadcastAnswer(void) = 0;
    
                virtual void receiveData(CBitStream data) = 0;
    
    };
    

    Die abgeleitete Klasse sieht so aus:

    class CB : public INetClientCBInterface
    
    {
    
    public:
    
        virtual bool incomingConnection(void)
    
        {
    
        }
    
        virtual void connectionEstablished(CConnection *connection)
    
        {
    
            printf("New connection...n");
    
            if (connection != 0)
    
            {
    
                conn = connection;
    
            }
    
        }
    
        virtual void broadcastAnswer(void)
    
        {
    
        }
    
        virtual void receiveData(CBitStream data)
    
        {
    
            printf("Received data...n");
    
            printf("Length: %d byten", data.getSize());
    
            printf("Data: "%s"n", data.getData());
    
        }
    
        virtual void receiveFile(void)
    
        {
    
        }
    
    };
    

    Wenn ich das ganze im Debugger laufen lasse, meldet mir der irgendwas wie "SIGTRAP" und einen Hinweis, das der Stack korrupt sein könnte. Wenn ich dem Debugger befehle, das Programm fortzuführen, funktioniert alles bestens... bis die Funktion das nächste mal aufgerufen wird.

    Was bitteschön ist da los???

    Edit: Okay, ich hab den Fehler... es lag wie immer nicht an dem Stück Code, den ich gepostet habe, sondern an der CBitStream-Klasse... 🙄


Anmelden zum Antworten