<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Programm bricht ab [gelöst...]]]></title><description><![CDATA[<p>In der letzten Zeit programmiere ich eine Netzwerkengine in C++.<br />
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.<br />
Nur leider bricht das Programm immer ab, wenn die Dll eine Funktion der Callbackklasse aufgerufen hat (Am Ende der Funktion!).</p>
<p>Hier meine Basisklasse:</p>
<pre><code class="language-cpp">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;

};
</code></pre>
<p>Die abgeleitete Klasse sieht so aus:</p>
<pre><code class="language-cpp">class CB : public INetClientCBInterface

{

public:

    virtual bool incomingConnection(void)

    {

    }

    virtual void connectionEstablished(CConnection *connection)

    {

        printf(&quot;New connection...n&quot;);

        if (connection != 0)

        {

            conn = connection;

        }

    }

    virtual void broadcastAnswer(void)

    {

    }

    virtual void receiveData(CBitStream data)

    {

        printf(&quot;Received data...n&quot;);

        printf(&quot;Length: %d byten&quot;, data.getSize());

        printf(&quot;Data: &quot;%s&quot;n&quot;, data.getData());

    }

    virtual void receiveFile(void)

    {

    }

};
</code></pre>
<p>Wenn ich das ganze im Debugger laufen lasse, meldet mir der irgendwas wie &quot;SIGTRAP&quot; 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.</p>
<p>Was bitteschön ist da los???</p>
<p><strong>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...</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147782/programm-bricht-ab-gelöst</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 10:34:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147782.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 May 2006 21:41:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programm bricht ab [gelöst...] on Sun, 21 May 2006 16:41:35 GMT]]></title><description><![CDATA[<p>In der letzten Zeit programmiere ich eine Netzwerkengine in C++.<br />
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.<br />
Nur leider bricht das Programm immer ab, wenn die Dll eine Funktion der Callbackklasse aufgerufen hat (Am Ende der Funktion!).</p>
<p>Hier meine Basisklasse:</p>
<pre><code class="language-cpp">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;

};
</code></pre>
<p>Die abgeleitete Klasse sieht so aus:</p>
<pre><code class="language-cpp">class CB : public INetClientCBInterface

{

public:

    virtual bool incomingConnection(void)

    {

    }

    virtual void connectionEstablished(CConnection *connection)

    {

        printf(&quot;New connection...n&quot;);

        if (connection != 0)

        {

            conn = connection;

        }

    }

    virtual void broadcastAnswer(void)

    {

    }

    virtual void receiveData(CBitStream data)

    {

        printf(&quot;Received data...n&quot;);

        printf(&quot;Length: %d byten&quot;, data.getSize());

        printf(&quot;Data: &quot;%s&quot;n&quot;, data.getData());

    }

    virtual void receiveFile(void)

    {

    }

};
</code></pre>
<p>Wenn ich das ganze im Debugger laufen lasse, meldet mir der irgendwas wie &quot;SIGTRAP&quot; 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.</p>
<p>Was bitteschön ist da los???</p>
<p><strong>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...</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1061302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1061302</guid><dc:creator><![CDATA[thephoenix]]></dc:creator><pubDate>Sun, 21 May 2006 16:41:35 GMT</pubDate></item></channel></rss>