<?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[Konstruktor&#x2F;Destruktor und OpenSceneGraph NodeVisitor]]></title><description><![CDATA[<p>Hallo Leute,<br />
sorry erst mal, ich weiß echt nicht was ich da als Titel eingeben sollte. Ich weiß nicht mal ob das hier das richtige Forum ist oder ob ich in einem Forum für OpenSceneGraph nachfragen soll.</p>
<p>Ich habe hier folgendes Programm, welches mir abstürzt:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &quot;osg/Group&quot;

class MyVisitor : public osg::NodeVisitor
{
	public:
		char* mPuffer;
		MyVisitor(char* puffer)
		{
			printf(&quot;Konstruktor\n&quot;);
			printf(&quot;%s\n&quot;,puffer);
			mPuffer = puffer;
		}
		~MyVisitor()
		{
				printf(&quot;Destruktor\n&quot;);
		}
};
class MyServer
{
	public:
		char* mPuffer;
		MyServer()
		{
			mPuffer = new char[10];	
			mPuffer[0] = 'H';
			mPuffer[1] = 'a';
			mPuffer[2] = 'l';
			mPuffer[3] = 'l';
			mPuffer[4] = 'o';
			mPuffer[5] = 0;

			//MyVisitor* mw = new MyVisitor(mPuffer);
			MyVisitor mw(mPuffer);
		}
};
int main(int argc, char** argv[])
{
	MyServer* ms = new MyServer();
	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Die Fehlermeldung lautet:<br />
Unbehandelte Ausnahme bei 0x100c4475 in Konfigurator_Server.exe: 0xC0000005:<br />
Zugriffsverletzung beim Lesen an Position 0x00000003.</p>
<p>Der Haltepunkt zeigt auf die Zeile nach <strong>MyVisitor mw(mPuffer);</strong> im Konstruktor von MyServer, also Zeile 35.</p>
<p>Ich habe hier zwei Möglichkeiten, zu verhindern, dass das Programm abstürzt:</p>
<p>1.Ich leite meine Klasse MyVisitor nicht von osg::NodeVisitor ab, also Zeile 4<br />
<strong>class MyVisitor</strong><br />
anstatt<br />
<strong>class MyVisitor : public osg::NodeVisitor</strong></p>
<p>2.Ich benutze die auskommentierte Zeile 33 anstatt Zeile 34, also<br />
<em><em>MyVisitor</em> mw = new MyVisitor(mPuffer);</em>*<br />
anstatt<br />
<strong>MyVisitor mw(mPuffer);</strong></p>
<p>Ähm... tja... also ich hab kein Problem damit, meine zweite Lösungsvariante zu benutzen. Aber ich würde doch gerne verstehen was da schief läuft...<br />
Weiß das jemand?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/279219/konstruktor-destruktor-und-openscenegraph-nodevisitor</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 17:20:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/279219.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Dec 2010 10:21:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktor&#x2F;Destruktor und OpenSceneGraph NodeVisitor on Tue, 21 Dec 2010 10:21:14 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
sorry erst mal, ich weiß echt nicht was ich da als Titel eingeben sollte. Ich weiß nicht mal ob das hier das richtige Forum ist oder ob ich in einem Forum für OpenSceneGraph nachfragen soll.</p>
<p>Ich habe hier folgendes Programm, welches mir abstürzt:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &quot;osg/Group&quot;

class MyVisitor : public osg::NodeVisitor
{
	public:
		char* mPuffer;
		MyVisitor(char* puffer)
		{
			printf(&quot;Konstruktor\n&quot;);
			printf(&quot;%s\n&quot;,puffer);
			mPuffer = puffer;
		}
		~MyVisitor()
		{
				printf(&quot;Destruktor\n&quot;);
		}
};
class MyServer
{
	public:
		char* mPuffer;
		MyServer()
		{
			mPuffer = new char[10];	
			mPuffer[0] = 'H';
			mPuffer[1] = 'a';
			mPuffer[2] = 'l';
			mPuffer[3] = 'l';
			mPuffer[4] = 'o';
			mPuffer[5] = 0;

			//MyVisitor* mw = new MyVisitor(mPuffer);
			MyVisitor mw(mPuffer);
		}
};
int main(int argc, char** argv[])
{
	MyServer* ms = new MyServer();
	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Die Fehlermeldung lautet:<br />
Unbehandelte Ausnahme bei 0x100c4475 in Konfigurator_Server.exe: 0xC0000005:<br />
Zugriffsverletzung beim Lesen an Position 0x00000003.</p>
<p>Der Haltepunkt zeigt auf die Zeile nach <strong>MyVisitor mw(mPuffer);</strong> im Konstruktor von MyServer, also Zeile 35.</p>
<p>Ich habe hier zwei Möglichkeiten, zu verhindern, dass das Programm abstürzt:</p>
<p>1.Ich leite meine Klasse MyVisitor nicht von osg::NodeVisitor ab, also Zeile 4<br />
<strong>class MyVisitor</strong><br />
anstatt<br />
<strong>class MyVisitor : public osg::NodeVisitor</strong></p>
<p>2.Ich benutze die auskommentierte Zeile 33 anstatt Zeile 34, also<br />
<em><em>MyVisitor</em> mw = new MyVisitor(mPuffer);</em>*<br />
anstatt<br />
<strong>MyVisitor mw(mPuffer);</strong></p>
<p>Ähm... tja... also ich hab kein Problem damit, meine zweite Lösungsvariante zu benutzen. Aber ich würde doch gerne verstehen was da schief läuft...<br />
Weiß das jemand?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997519</guid><dc:creator><![CDATA[SchlechterInformatiker]]></dc:creator><pubDate>Tue, 21 Dec 2010 10:21:14 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor&#x2F;Destruktor und OpenSceneGraph NodeVisitor on Tue, 21 Dec 2010 10:44:15 GMT]]></title><description><![CDATA[<p>SchlechterInformatiker schrieb:</p>
<blockquote>
<p>2.Ich benutze die auskommentierte Zeile 33 anstatt Zeile 34, also<br />
<em><em>MyVisitor</em> mw = new MyVisitor(mPuffer);</em>*<br />
anstatt<br />
<strong>MyVisitor mw(mPuffer);</strong></p>
</blockquote>
<p>Mach mal</p>
<pre><code class="language-cpp">MyVisitor* mw = new MyVisitor(mPuffer);
delete mw;
</code></pre>
<p>Keine Ahnung wass osg::NodeVisitor ist, sieht aber so aus als geht da was im Destruktor ~NodeVisitor was schief.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997530</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Tue, 21 Dec 2010 10:44:15 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor&#x2F;Destruktor und OpenSceneGraph NodeVisitor on Tue, 21 Dec 2010 10:52:53 GMT]]></title><description><![CDATA[<p>Ja,</p>
<pre><code class="language-cpp">MyVisitor* mw = new MyVisitor(mPuffer);
delete mw;
</code></pre>
<p>stürzt ebenfalls ab.</p>
<p>Zwischenfrage: Wieso wird denn da ~NodeVisitor() aufgerufen? Ich stelle doch selber einen Destruktor bereit...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997531</guid><dc:creator><![CDATA[SchlechterInformatiker]]></dc:creator><pubDate>Tue, 21 Dec 2010 10:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor&#x2F;Destruktor und OpenSceneGraph NodeVisitor on Tue, 21 Dec 2010 10:54:00 GMT]]></title><description><![CDATA[<p>SchlechterInformatiker schrieb:</p>
<blockquote>
<p>Wieso wird denn da ~NodeVisitor() aufgerufen? Ich stelle doch selber einen Destruktor bereit...?</p>
</blockquote>
<p>Die Basisklassendestruktoren werden automatisch aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997532</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 21 Dec 2010 10:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor&#x2F;Destruktor und OpenSceneGraph NodeVisitor on Tue, 21 Dec 2010 11:18:53 GMT]]></title><description><![CDATA[<p>Ja ok, dann läuft also wohl in ~NodeVisitor() irgendwas schief... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997538</guid><dc:creator><![CDATA[SchlechterInformatiker]]></dc:creator><pubDate>Tue, 21 Dec 2010 11:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor&#x2F;Destruktor und OpenSceneGraph NodeVisitor on Tue, 21 Dec 2010 12:00:30 GMT]]></title><description><![CDATA[<p>Ich kenne mich mit der Lib nicht aus, aber man muss die Pointer vermutlich mit osg::ref_ptr verwalten =&gt; Doku lesen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997556</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 21 Dec 2010 12:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor&#x2F;Destruktor und OpenSceneGraph NodeVisitor on Tue, 21 Dec 2010 13:26:27 GMT]]></title><description><![CDATA[<p>Hab schon mal damit herumgespielt, aber erst ging es nicht. Aber jetzt hab ich es hinbekommen mit dem osg::ref_ptr.</p>
<pre><code class="language-cpp">osg::ref_ptr&lt;MyVisitor&gt; mw = new MyVisitor(mPuffer);
//Irgenwas machen
mw.release();
</code></pre>
<p>Viele Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1997576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1997576</guid><dc:creator><![CDATA[SchlechterInformatiker]]></dc:creator><pubDate>Tue, 21 Dec 2010 13:26:27 GMT</pubDate></item></channel></rss>