<?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[Arrays, Pointer, Laufzeitfehler]]></title><description><![CDATA[<pre><code>#include &lt;iostream&gt;	

#define SCHWERT 1		
#define BOGEN 2			

class GEGENSTAND		
{
public:
	int gegID;				
};

class SLOT
{
public:
	GEGENSTAND *pGegenstand;		
	bool istBelegt;									
};

void gegenstandreintun(SLOT *slot, GEGENSTAND *pGeg)		
{														
	slot-&gt;pGegenstand-&gt;gegID = pGeg-&gt;gegID;														
	slot-&gt;istBelegt = true;								
}

int main ()
{
	SLOT Inventar[3][4];			
	GEGENSTAND *Schwert = new GEGENSTAND;
	GEGENSTAND *Bogen = new GEGENSTAND;		

	Schwert-&gt;gegID = SCHWERT;								
	Bogen-&gt;gegID = BOGEN;		

	//gegenstandreintun(&amp;(Inventar[0][3]), Schwert);
	//gegenstandreintun(&amp;(Inventar[2][2]), Bogen);

	gegenstandreintun(&amp;(*(*(Inventar+0)+3)), Schwert);
	gegenstandreintun(&amp;(*(*(Inventar+2)+2)), Bogen);

	for (int x = 0; x &lt;= 2; x++)
	{		
		for(int y = 0; y &lt;= 3; y++)
		{			
			if(Inventar[x][y].istBelegt = 0)
			{
				continue;	
			}
			else if ((Inventar[x][y].pGegenstand-&gt;gegID) == SCHWERT) 
			{
				printf(&quot;im gepaeck, in der %d Reihe und&quot;
					&quot;der %d Spalte liegt ein Schwert \n&quot;, x, y);
			}
			else if ((Inventar[x][y].pGegenstand-&gt;gegID) == BOGEN) 
			{
				printf(&quot;im gepaeck, in der %d Reihe und&quot;
					&quot;der %d Spalte liegt ein Bogen \n&quot;, x, y);
			}

		}
	}
	return 0;
}
</code></pre>
<p>Kein Compilerfehler, kein LinkerFehler, aber Laufzeitfehler. Mist.<br />
Überhaupt keine Ahnung worans liegt, außer dass es vllt die arrays und die Zeiger sind, hab versucht zu debuggen, gab mir das folgende ergebnis:</p>
<p>Unbehandelte Ausnahme bei 0x00401028 in bla.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x004026cb.</p>
<p>Toll, er schreibt am Ziel vorbei, soviel ist klar, aber hä?</p>
<p>hier noch ein bisschen Dissasembly:</p>
<pre><code>00401004  push        esi  
00401005  push        edi  
00401006  push        4    
00401008  call        004011B0 
0040100D  push        4    
0040100F  mov         esi,eax 
00401011  call        004011B0 
00401016  mov         edx,dword ptr [esp+2Ch] 
0040101A  mov         dword ptr [esi],1 
00401020  mov         dword ptr [eax],2 
00401026  mov         ecx,dword ptr [esi] 
00401028  mov         dword ptr [edx],ecx  &lt;- hier zeigt er mir mit nem pfeil hin
0040102A  mov         eax,dword ptr [eax] 
0040102C  mov         ecx,dword ptr [esp+64h] 
00401030  add         esp,8 
00401033  mov         byte ptr [esp+28h],1 
00401038  mov         dword ptr [ecx],eax 
0040103A  mov         byte ptr [esp+60h],1 
0040103F  xor         ebp,ebp 
00401041  lea         edi,[esp+0Ch] 
00401045  xor         esi,esi
</code></pre>
<p>bei 004026cb, dort wo er was hinschreiben wollte, gibt es</p>
<pre><code>004026CB  ret
</code></pre>
<p>Tja, hab zwar ein schönes Assembler Buch hier, aber ich glaub, wenn ich nicht mal C++ richtig kann, sollte ich assembler erstmal lassen.</p>
<p>Achso: helft mir bitte xDD, ich möchte dass es klappt, sonst esse ich meine gitarre</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168230/arrays-pointer-laufzeitfehler</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 09:05:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168230.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Dec 2006 19:52:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Arrays, Pointer, Laufzeitfehler on Tue, 19 Dec 2006 19:52:31 GMT]]></title><description><![CDATA[<pre><code>#include &lt;iostream&gt;	

#define SCHWERT 1		
#define BOGEN 2			

class GEGENSTAND		
{
public:
	int gegID;				
};

class SLOT
{
public:
	GEGENSTAND *pGegenstand;		
	bool istBelegt;									
};

void gegenstandreintun(SLOT *slot, GEGENSTAND *pGeg)		
{														
	slot-&gt;pGegenstand-&gt;gegID = pGeg-&gt;gegID;														
	slot-&gt;istBelegt = true;								
}

int main ()
{
	SLOT Inventar[3][4];			
	GEGENSTAND *Schwert = new GEGENSTAND;
	GEGENSTAND *Bogen = new GEGENSTAND;		

	Schwert-&gt;gegID = SCHWERT;								
	Bogen-&gt;gegID = BOGEN;		

	//gegenstandreintun(&amp;(Inventar[0][3]), Schwert);
	//gegenstandreintun(&amp;(Inventar[2][2]), Bogen);

	gegenstandreintun(&amp;(*(*(Inventar+0)+3)), Schwert);
	gegenstandreintun(&amp;(*(*(Inventar+2)+2)), Bogen);

	for (int x = 0; x &lt;= 2; x++)
	{		
		for(int y = 0; y &lt;= 3; y++)
		{			
			if(Inventar[x][y].istBelegt = 0)
			{
				continue;	
			}
			else if ((Inventar[x][y].pGegenstand-&gt;gegID) == SCHWERT) 
			{
				printf(&quot;im gepaeck, in der %d Reihe und&quot;
					&quot;der %d Spalte liegt ein Schwert \n&quot;, x, y);
			}
			else if ((Inventar[x][y].pGegenstand-&gt;gegID) == BOGEN) 
			{
				printf(&quot;im gepaeck, in der %d Reihe und&quot;
					&quot;der %d Spalte liegt ein Bogen \n&quot;, x, y);
			}

		}
	}
	return 0;
}
</code></pre>
<p>Kein Compilerfehler, kein LinkerFehler, aber Laufzeitfehler. Mist.<br />
Überhaupt keine Ahnung worans liegt, außer dass es vllt die arrays und die Zeiger sind, hab versucht zu debuggen, gab mir das folgende ergebnis:</p>
<p>Unbehandelte Ausnahme bei 0x00401028 in bla.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x004026cb.</p>
<p>Toll, er schreibt am Ziel vorbei, soviel ist klar, aber hä?</p>
<p>hier noch ein bisschen Dissasembly:</p>
<pre><code>00401004  push        esi  
00401005  push        edi  
00401006  push        4    
00401008  call        004011B0 
0040100D  push        4    
0040100F  mov         esi,eax 
00401011  call        004011B0 
00401016  mov         edx,dword ptr [esp+2Ch] 
0040101A  mov         dword ptr [esi],1 
00401020  mov         dword ptr [eax],2 
00401026  mov         ecx,dword ptr [esi] 
00401028  mov         dword ptr [edx],ecx  &lt;- hier zeigt er mir mit nem pfeil hin
0040102A  mov         eax,dword ptr [eax] 
0040102C  mov         ecx,dword ptr [esp+64h] 
00401030  add         esp,8 
00401033  mov         byte ptr [esp+28h],1 
00401038  mov         dword ptr [ecx],eax 
0040103A  mov         byte ptr [esp+60h],1 
0040103F  xor         ebp,ebp 
00401041  lea         edi,[esp+0Ch] 
00401045  xor         esi,esi
</code></pre>
<p>bei 004026cb, dort wo er was hinschreiben wollte, gibt es</p>
<pre><code>004026CB  ret
</code></pre>
<p>Tja, hab zwar ein schönes Assembler Buch hier, aber ich glaub, wenn ich nicht mal C++ richtig kann, sollte ich assembler erstmal lassen.</p>
<p>Achso: helft mir bitte xDD, ich möchte dass es klappt, sonst esse ich meine gitarre</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195072</guid><dc:creator><![CDATA[Azrael* il Meraz]]></dc:creator><pubDate>Tue, 19 Dec 2006 19:52:31 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays, Pointer, Laufzeitfehler on Tue, 19 Dec 2006 20:04:09 GMT]]></title><description><![CDATA[<p>dein SLOT array Inventar beinhaltet keine initialisierten objekte. ebenso ist pGegenstand jedes SLOT &quot;objekts&quot; (die nicht existieren) nicht initialisiert.</p>
<p>solltest dir konstruktoren o.ä. für die klassen schreiben, die diese objekte erzeugen.</p>
<p>sehe übrigens für das programm keinen bedarf an pointern. zumindest nicht so, wie es derzeit verwendet wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195083</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Tue, 19 Dec 2006 20:04:09 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays, Pointer, Laufzeitfehler on Tue, 19 Dec 2006 20:27:04 GMT]]></title><description><![CDATA[<p>später haben die Gegenstände viele andere Eigenschaften, wie z.B Angriffsstärke, benötigte Stärke, blablabla... und natürlich eine schöne Grafik^^. Da es ja viele einzelne Gegenstände geben wird, die eigentlich ziemlich konstant bleiben soll(t)en und auch nicht jeder Feind in seinem eigenen Inventar die Waffe mit all ihren Eigenschaften nochmal gespeichert haben sollte, finde ich Zeiger durchaus angebracht.</p>
<p>hmmm... konstruktoren gemacht, trotzdem absturz:</p>
<pre><code>class GEGENSTAND		
{
public:
	GEGENSTAND();
	int gegID;				
};

GEGENSTAND::GEGENSTAND()
{
	gegID = NULL;
}

class SLOT
{
public:
	SLOT();
	GEGENSTAND *pGegenstand;		
	bool istBelegt;									
};
SLOT::SLOT()
{
	pGegenstand = NULL;
	istBelegt = 0;
}
</code></pre>
<p>Beim Debuggen schreibt er diesmal Zugriffsverletzung beim Schreiben an Position 0x00000000.</p>
<p>hmmm... pGegenstand = NULL... Zugriffsverletzung bei 0x00000000.</p>
<p>Ich fang so langsam an, zu verstehen, aber jemand muss mir trotzdem ein Konzertflügel auf den Kopf schmeißen, damit ich merke, wo mein fehler ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195094</guid><dc:creator><![CDATA[Azrael* il Meraz]]></dc:creator><pubDate>Tue, 19 Dec 2006 20:27:04 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays, Pointer, Laufzeitfehler on Tue, 19 Dec 2006 20:35:44 GMT]]></title><description><![CDATA[<p>Problem selbständig (durch denken) gelöst:</p>
<blockquote>
<p>SLOT::SLOT()<br />
{<br />
pGegenstand = new GEGENSTAND;<br />
istBelegt = 0;<br />
}</p>
</blockquote>
<p>juhu, kein Konzertflügeln aufm Kopf.</p>
<p>vielen Dank für die Idee mit den Konstruktoren, thordk. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195097</guid><dc:creator><![CDATA[Azrael* il Meraz]]></dc:creator><pubDate>Tue, 19 Dec 2006 20:35:44 GMT</pubDate></item></channel></rss>