<?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[Zu große Strukturen]]></title><description><![CDATA[<p>Guten Abend,<br />
Ich bin gerade dabei eine Simulation für künstliche Neuronale Netze zu programmieren. Dabei wollte ich das neuronale Netz als Struktur darstellen. Dieses Netz beinhaltet ein 255*255 großes, zwei dimensionales Array von Neuronen. Jedes Neuron wiederum speichert einige Werte.<br />
Wenn ich nun versuche mir durch das Makro sizeof() die Größe dieser Struktur ausgeben zu lassen, so erhalte ich eine Fehlermeldung &quot;Speicherzugriffsfehler (Speicherabzug geschrieben)&quot;. Der selbe Fehler trifft auch auf, wenn ich versuche einen Zeiger auf diese Struktur einer Funktion zu übergeben.<br />
Offensichtlich ist die Struktur zu groß, da der Fehler entfällt verringere ich die maximale Größe. Wie kann man auch große Strukturen handeln?<br />
Ich hoffe ihr könnt mit helfen,<br />
Guten Abend.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/329721/zu-große-strukturen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 26 May 2026 02:51:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329721.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Dec 2014 18:26:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zu große Strukturen on Thu, 04 Dec 2014 18:26:39 GMT]]></title><description><![CDATA[<p>Guten Abend,<br />
Ich bin gerade dabei eine Simulation für künstliche Neuronale Netze zu programmieren. Dabei wollte ich das neuronale Netz als Struktur darstellen. Dieses Netz beinhaltet ein 255*255 großes, zwei dimensionales Array von Neuronen. Jedes Neuron wiederum speichert einige Werte.<br />
Wenn ich nun versuche mir durch das Makro sizeof() die Größe dieser Struktur ausgeben zu lassen, so erhalte ich eine Fehlermeldung &quot;Speicherzugriffsfehler (Speicherabzug geschrieben)&quot;. Der selbe Fehler trifft auch auf, wenn ich versuche einen Zeiger auf diese Struktur einer Funktion zu übergeben.<br />
Offensichtlich ist die Struktur zu groß, da der Fehler entfällt verringere ich die maximale Größe. Wie kann man auch große Strukturen handeln?<br />
Ich hoffe ihr könnt mit helfen,<br />
Guten Abend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2431209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431209</guid><dc:creator><![CDATA[DilBahadur]]></dc:creator><pubDate>Thu, 04 Dec 2014 18:26:39 GMT</pubDate></item><item><title><![CDATA[Reply to Zu große Strukturen on Thu, 04 Dec 2014 18:29:17 GMT]]></title><description><![CDATA[<p>Nein, was du beschreibst passiert nicht. Code!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2431211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431211</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 04 Dec 2014 18:29:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zu große Strukturen on Sat, 06 Dec 2014 11:28:43 GMT]]></title><description><![CDATA[<pre><code>//Neuronstruktur
struct Neuron
{
	double aktivierung;
	double schwellwert;
	double klein_delta;
	double netzeingabe;
	double gewichte[255];
	int    gewichte_len;
	//Aktivierungsfunktion
	double (*ak_funktion)(double);
};

//Neuronales Netz
struct NeuronNetz
{
        Neuron Schichten[4][255];
	int Schichtmengen[4];
	int Schichtanzahl;
};

//Initialisiert das Netz
void InitNeuronNetz(NeuronNetz* netz, int schichtanzahl, int* neuronenproschicht)
{
	//Die jeweilige Anzahl an Neuronen aller Schichten speichern 
	for(int i = 0; i &lt; schichtanzahl; i++){netz-&gt;Schichtmengen[i] = neuronenproschicht[i];}
	//Input Gewichte gleich 1 setzen
	for(int i = 0; i &lt; neuronenproschicht[0]; i++)
	{
		netz-&gt;Schichten[0][i].gewichte_len =  0; //Keine Verbindungen zu anderen Neuronen
		netz-&gt;Schichten[0][i].klein_delta = 0.0;
		netz-&gt;Schichten[0][i].netzeingabe = 0.0;
		netz-&gt;Schichten[0][i].aktivierung = 0.0;
		netz-&gt;Schichten[0][i].schwellwert = 0.0;
		netz-&gt;Schichten[0][i].ak_funktion = linear;
	}

	//Die restlichen Schichten durchgehen
	srand(time(0));
	for(int h = 1; h &lt; schichtanzahl; h++)
	{
		//Für jede Schicht jedes Neuron durchgehen
		for(int i = 0; i &lt; neuronenproschicht[h]; i++)
		{
			//Standart Werte setzen
			netz-&gt;Schichten[h][i].klein_delta = 0.0;
			netz-&gt;Schichten[h][i].netzeingabe = 0.0;
			netz-&gt;Schichten[h][i].aktivierung = 0.0;
			netz-&gt;Schichten[h][i].schwellwert = 0.0;
			netz-&gt;Schichten[h][i].ak_funktion = sigmoid;
			netz-&gt;Schichten[h][i].gewichte_len = 0;
			//Und soviele Gewichte zufällig setzen wie es Neuronen in der vorherigen Schicht gibt
			for(int j = 0; j &lt; netz-&gt;Schichtmengen[h - 1]; j++)
			{
				//Werte zwischen -1 und 1
				netz-&gt;Schichten[h][i].gewichte[j] = rndm();
				netz-&gt;Schichten[h][i].gewichte_len++; 
			}
		}
	}

	for(int i = 0; i &lt; neuronenproschicht[schichtanzahl-1]; i++)
	{
		netz-&gt;Schichten[schichtanzahl-1][i].gewichte_len =  0; //Keine Informationsverarbeitung in der Input Schicht
		netz-&gt;Schichten[schichtanzahl-1][i].klein_delta = 0.0;
		netz-&gt;Schichten[schichtanzahl-1][i].netzeingabe = 0.0;
		netz-&gt;Schichten[schichtanzahl-1][i].aktivierung = 0.0;
		netz-&gt;Schichten[schichtanzahl-1][i].schwellwert = 0.0;
		netz-&gt;Schichten[schichtanzahl-1][i].ak_funktion = linear;
		for(int j = 0; j &lt; netz-&gt;Schichtmengen[schichtanzahl-2]; j++)
		{
			netz-&gt;Schichten[schichtanzahl-1][i].gewichte[j] = rndm();
			netz-&gt;Schichten[schichtanzahl-1][i].gewichte_len++;
		}
	}
}

//Aufruf der Funktion in main.cpp
NeuronNetz netz;
InitNeuronNetz(&amp;netz, 4, S);
</code></pre>
<p>Der Code Funktioniert, solange das neuronale Netz ein geringes Ausmaß hat, wie in diesem Fall gegeben.<br />
Ändere ich jedoch die Größe auf 255*255, so gibt es einen Fehler, ausgelöst in der main.cpp</p>
<pre><code>//Neuronales Netz
struct NeuronNetz
{
        Neuron Schichten[255][255];
	int Schichtmengen[255];
	int Schichtanzahl;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2431445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431445</guid><dc:creator><![CDATA[DilBahadur]]></dc:creator><pubDate>Sat, 06 Dec 2014 11:28:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zu große Strukturen on Sat, 06 Dec 2014 11:32:18 GMT]]></title><description><![CDATA[<p>Vielleicht klappt</p>
<pre><code>NeuronNetz *netz=new NeuronNetz;
InitNeuronNetz(netz, 4, S);
delete netz;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2431446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431446</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 06 Dec 2014 11:32:18 GMT</pubDate></item><item><title><![CDATA[Reply to Zu große Strukturen on Sat, 06 Dec 2014 11:48:44 GMT]]></title><description><![CDATA[<p>Der Fehler tritt auf, wenn du das Objekt auf dem Stack anlegst:</p>
<pre><code class="language-cpp">int main()
{
  NeuronNetz netz;
}
</code></pre>
<p>sollte den Fehler auch zeigen.<br />
Lösung: Heapspeicher, z.B. wie volkards Code</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2431449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431449</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 06 Dec 2014 11:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zu große Strukturen on Sat, 06 Dec 2014 12:16:14 GMT]]></title><description><![CDATA[<p>Funktioniert einwandfrei, danke <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/2431452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431452</guid><dc:creator><![CDATA[DilBahadur]]></dc:creator><pubDate>Sat, 06 Dec 2014 12:16:14 GMT</pubDate></item></channel></rss>