<?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[Nach Update Programmabstürze]]></title><description><![CDATA[<p>Hallo,</p>
<p>Bin auf das neue Visual Studio umgestiegen und seit dem gehen die meisten meiner Programme nicht mehr hier ist mal eins zum addieren von Matrizzen.</p>
<pre><code class="language-cpp">#include &lt;conio.h&gt;		// Einbindung der Bibliothek Conio für getch()
#include &lt;iostream&gt;		// Einbindung der Bibliothek iostream für cout, using namespace std;
#include &lt;cmath&gt;		// Einbindung der Bibliothek math.h für Mathematische Funktionen
#include &lt;stdio.h&gt;		// Einbindung der Bibliothek stdio.h für printf
#include &lt;ctime&gt;		// Einbindung der Bibliothek time.h für das Zeitstoppen
#include &lt;cstdlib&gt;		// für srand und rand 

using namespace std;

// Deklaration einer Funktion
int** mat1(int **matrix);
int** mat2(int **matrix2);
int** addmatrix (int **matrix3);
int** schreibMatrix (int **matrix3);

void main()
{
	int **matrix=0;
	int **matrix2=0;
	int **matrix3=0;
	int dim1=0;
	mat1(matrix);
	mat2(matrix2);
	cout&lt;&lt; endl&lt;&lt; endl &lt;&lt; matrix&lt;&lt; endl&lt;&lt; endl&lt;&lt; matrix2&lt;&lt; endl&lt;&lt; endl;
	addmatrix (matrix3);
	schreibMatrix(matrix3);
}

//--------------------------------------------------------------------------------------------------------------------------------

int** mat1(int **matrix)
{

	 int i=0,j=0,dim1=0,dim2=0;
	 cout &lt;&lt; &quot;Gib die Anzahl der Zeilen und Spalten der Matrix an: &quot;&lt;&lt;endl;
	 cin &gt;&gt; dim1;
			dim2 = dim1;
	 matrix = new int* [dim1];
	 for (i = 0; i &lt; dim1; i++)
		matrix[i] = new int[dim2];
	 for (i = 0; i &lt; dim1; i++)
	 {
		  for (j = 0; j &lt; dim2; j++)
		  {
			   cout &lt;&lt; &quot;Geben sie das Matrixelement a&quot; &lt;&lt; i+1 &lt;&lt; j+1 &lt;&lt;&quot; ein: &quot;;
			   cin &gt;&gt; matrix [i] [j];
		  }
	 }
	 cout &lt;&lt; &quot;Die eingegebene Matrix lautet: &quot; &lt;&lt; endl;
	 for (i = 0; i &lt; dim1; i++)
	 {
		for (int j = 0; j &lt; dim2; j++)
		cout &lt;&lt; matrix [i] [j] &lt;&lt; &quot; &quot;; 
		cout &lt;&lt; endl;
	 }
	return (matrix);
	//return (dim1);
}

//--------------------------------------------------------------------------------------------------------------------------------

int** mat2(int **matrix2)
{
	 int z=0,p=0,dim11=0,dim22=0;
	 cout &lt;&lt; &quot;Gib die Anzahl der Zeilen und Spalten der Matrix an: &quot;&lt;&lt;endl;
	 cin &gt;&gt; dim11;
			dim22 = dim11;
	 matrix2 = new int* [dim11];
	 for (z = 0; z &lt; dim11; z++)
		matrix2[z] = new int[dim22];
	 for (z = 0; z &lt; dim11; z++)
	 {
		  for (p = 0; p &lt; dim22; p++)
		  {
			   cout &lt;&lt; &quot;Geben sie das Matrixelement a&quot; &lt;&lt; z+1 &lt;&lt; p+1 &lt;&lt;&quot; ein: &quot;;
			   cin &gt;&gt; matrix2 [z] [p];
		  }
	 }
	 cout &lt;&lt; &quot;Die eingegebene Matrix lautet: &quot; &lt;&lt; endl;
	 for (z = 0; z &lt; dim11; z++)
	  {
		for (int p = 0; p &lt; dim22; p++)
		cout &lt;&lt; matrix2 [z] [p] &lt;&lt; &quot; &quot;;
		cout &lt;&lt; endl;
	  }
	return (matrix2);
}

//--------------------------------------------------------------------------------------------------------------------------------

int** addmatrix (int **matrix3)
{	
	int dim1=0;
	int **matrix=0;
	int **matrix2=0;
	int w=0,q=0;
	int summe=0;
	for (int q =0; q&lt;dim1; q++)
		{	
		for ( int w =0; w&lt;dim1; w++)		//Matrizenaddition
			{	
			summe=0;
			summe = matrix[q][w] + matrix2[q][w];
			matrix3[q][w]=summe;
			}
		}
return (matrix3);
}

//Ausgeben einer Matrix

int** schreibMatrix (int **matrix3)
{	int dim1=0;
	for (int i=0; i&lt;dim1; i++)
	{ 
		for (int j=0; j&lt;dim1; j++)
		cout&lt;&lt;matrix3[i][j];
		cout&lt;&lt;endl;
	}
return (matrix3);
</code></pre>
<pre><code>keine Warnungen mehr.
</code></pre>
<p>Wer schön wenn mir jm. sagen könnte wasfalsch ist oder was ich ändern muss.</p>
<p>MFg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216202/nach-update-programmabstürze</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 13:44:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216202.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Jun 2008 14:57:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 16:57:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Bin auf das neue Visual Studio umgestiegen und seit dem gehen die meisten meiner Programme nicht mehr hier ist mal eins zum addieren von Matrizzen.</p>
<pre><code class="language-cpp">#include &lt;conio.h&gt;		// Einbindung der Bibliothek Conio für getch()
#include &lt;iostream&gt;		// Einbindung der Bibliothek iostream für cout, using namespace std;
#include &lt;cmath&gt;		// Einbindung der Bibliothek math.h für Mathematische Funktionen
#include &lt;stdio.h&gt;		// Einbindung der Bibliothek stdio.h für printf
#include &lt;ctime&gt;		// Einbindung der Bibliothek time.h für das Zeitstoppen
#include &lt;cstdlib&gt;		// für srand und rand 

using namespace std;

// Deklaration einer Funktion
int** mat1(int **matrix);
int** mat2(int **matrix2);
int** addmatrix (int **matrix3);
int** schreibMatrix (int **matrix3);

void main()
{
	int **matrix=0;
	int **matrix2=0;
	int **matrix3=0;
	int dim1=0;
	mat1(matrix);
	mat2(matrix2);
	cout&lt;&lt; endl&lt;&lt; endl &lt;&lt; matrix&lt;&lt; endl&lt;&lt; endl&lt;&lt; matrix2&lt;&lt; endl&lt;&lt; endl;
	addmatrix (matrix3);
	schreibMatrix(matrix3);
}

//--------------------------------------------------------------------------------------------------------------------------------

int** mat1(int **matrix)
{

	 int i=0,j=0,dim1=0,dim2=0;
	 cout &lt;&lt; &quot;Gib die Anzahl der Zeilen und Spalten der Matrix an: &quot;&lt;&lt;endl;
	 cin &gt;&gt; dim1;
			dim2 = dim1;
	 matrix = new int* [dim1];
	 for (i = 0; i &lt; dim1; i++)
		matrix[i] = new int[dim2];
	 for (i = 0; i &lt; dim1; i++)
	 {
		  for (j = 0; j &lt; dim2; j++)
		  {
			   cout &lt;&lt; &quot;Geben sie das Matrixelement a&quot; &lt;&lt; i+1 &lt;&lt; j+1 &lt;&lt;&quot; ein: &quot;;
			   cin &gt;&gt; matrix [i] [j];
		  }
	 }
	 cout &lt;&lt; &quot;Die eingegebene Matrix lautet: &quot; &lt;&lt; endl;
	 for (i = 0; i &lt; dim1; i++)
	 {
		for (int j = 0; j &lt; dim2; j++)
		cout &lt;&lt; matrix [i] [j] &lt;&lt; &quot; &quot;; 
		cout &lt;&lt; endl;
	 }
	return (matrix);
	//return (dim1);
}

//--------------------------------------------------------------------------------------------------------------------------------

int** mat2(int **matrix2)
{
	 int z=0,p=0,dim11=0,dim22=0;
	 cout &lt;&lt; &quot;Gib die Anzahl der Zeilen und Spalten der Matrix an: &quot;&lt;&lt;endl;
	 cin &gt;&gt; dim11;
			dim22 = dim11;
	 matrix2 = new int* [dim11];
	 for (z = 0; z &lt; dim11; z++)
		matrix2[z] = new int[dim22];
	 for (z = 0; z &lt; dim11; z++)
	 {
		  for (p = 0; p &lt; dim22; p++)
		  {
			   cout &lt;&lt; &quot;Geben sie das Matrixelement a&quot; &lt;&lt; z+1 &lt;&lt; p+1 &lt;&lt;&quot; ein: &quot;;
			   cin &gt;&gt; matrix2 [z] [p];
		  }
	 }
	 cout &lt;&lt; &quot;Die eingegebene Matrix lautet: &quot; &lt;&lt; endl;
	 for (z = 0; z &lt; dim11; z++)
	  {
		for (int p = 0; p &lt; dim22; p++)
		cout &lt;&lt; matrix2 [z] [p] &lt;&lt; &quot; &quot;;
		cout &lt;&lt; endl;
	  }
	return (matrix2);
}

//--------------------------------------------------------------------------------------------------------------------------------

int** addmatrix (int **matrix3)
{	
	int dim1=0;
	int **matrix=0;
	int **matrix2=0;
	int w=0,q=0;
	int summe=0;
	for (int q =0; q&lt;dim1; q++)
		{	
		for ( int w =0; w&lt;dim1; w++)		//Matrizenaddition
			{	
			summe=0;
			summe = matrix[q][w] + matrix2[q][w];
			matrix3[q][w]=summe;
			}
		}
return (matrix3);
}

//Ausgeben einer Matrix

int** schreibMatrix (int **matrix3)
{	int dim1=0;
	for (int i=0; i&lt;dim1; i++)
	{ 
		for (int j=0; j&lt;dim1; j++)
		cout&lt;&lt;matrix3[i][j];
		cout&lt;&lt;endl;
	}
return (matrix3);
</code></pre>
<pre><code>keine Warnungen mehr.
</code></pre>
<p>Wer schön wenn mir jm. sagen könnte wasfalsch ist oder was ich ändern muss.</p>
<p>MFg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532899</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Fri, 20 Jun 2008 16:57:14 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 14:59:54 GMT]]></title><description><![CDATA[<p>In wie fern gehen Deine Programme nicht mehr, bzw. was an dem Code den Du hier gepostet hast genau? Compiled er nicht mehr, läuft er auf anderen Maschinen net...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532901</guid><dc:creator><![CDATA[PuerNoctis_offline]]></dc:creator><pubDate>Fri, 20 Jun 2008 14:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 15:08:44 GMT]]></title><description><![CDATA[<p>Ooookay, ich habe jetzt einfach mal so ins Blaue Deinen Code hier in meinem VS2005 reingepastet und F7 gedrückt. Folgende Fehlerchen zeigt mir der VC an:</p>
<ol>
<li>
<p>Gleich in der ersten Zeile Deiner main() wird <strong>HEAD</strong> verwendet. Ist das ein define der uns hier fehlt, oder eine Funktion bei der die Klammern vergessen wurden?! In Deinem Post auf jedenfall erstmal unbekannt, daher fehlerhaft.</p>
</li>
<li>
<p>In Deiner Funktion <strong>mat1()</strong> hast Du <strong>int</strong>** als Rückgabewert, Du hast aber zwei returns hintereinander, wovon eine eine Lokale ist, was nicht funktioniert...</p>
</li>
</ol>
<p>Weitere Anmerkungen:<br />
Initialisiere Deine Variablen bitte vorher, auch wenn es nur mit 0 oder irgendwas ist. Weniger Fehleranfällig...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532904</guid><dc:creator><![CDATA[PuerNoctis]]></dc:creator><pubDate>Fri, 20 Jun 2008 15:08:44 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 15:55:56 GMT]]></title><description><![CDATA[<p>So habe jetzt mal des angesprochene geändert und die Warnings mit rein kopiert, aber jetzt wird in die letzten beiden Funktionen die dim1 nicht mehr übergeben den mat 3 mus genauso groß werden wie mat 1. Hat da jm. einen Ratschlag?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532927</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Fri, 20 Jun 2008 15:55:56 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 16:04:46 GMT]]></title><description><![CDATA[<p>Geht net ist keine Fehlerbeschreibung <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/1532931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532931</guid><dc:creator><![CDATA[AhMannHansi]]></dc:creator><pubDate>Fri, 20 Jun 2008 16:04:46 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 16:10:12 GMT]]></title><description><![CDATA[<p>ChrisTucker schrieb:</p>
<blockquote>
<p>So habe jetzt mal des angesprochene geändert und die Warnings mit rein kopiert, aber jetzt wird in die letzten beiden Funktionen die dim1 nicht mehr übergeben den mat 3 mus genauso groß werden wie mat 1. Hat da jm. einen Ratschlag?</p>
</blockquote>
<p>Also das oben waren ja nur Warnungen. Dein Code ist immernoch kompilierbar. (Falls du einfach andere Werte bekommst, würde ich die Warnungen mal lesen und sie dir zu gemüte führen. Variablen sollten immer initialisiert werden. Auch wenn es nur 0 ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532940</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 20 Jun 2008 16:10:12 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 16:51:08 GMT]]></title><description><![CDATA[<p>Also Syntax stimmt allerdings, Allerdings klappt jetzt nach den Änderungen folgendes nicht meh1. in mat1 wird ein Wert per tastatur für dim1 zugewisen. dieser Wert muss auch mit in die unteren Funktionen übernommen werden. Das passiert aber nicht da ja das return weg ist.<br />
Desweiteren kommt folgende Fehlermeldung beim Kompilieren.<br />
Und zwar in dieser Reienfolge.</p>
<pre><code>Run-Time Check Failure #3 - The variable 'matrix' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'matrix2' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'matrix2' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'matrix' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'matrix3' is being used without being initialized.
Run-Time Check Failure #3 - The variable 'matrix3' is being used without being initialized.
</code></pre>
<p>addmatrix findet garnicht statt -&gt; Programmabsturz kommt schon vorher</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532956</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Fri, 20 Jun 2008 16:51:08 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 16:59:40 GMT]]></title><description><![CDATA[<p>Hallo Tucker,</p>
<p>schau Dir mal Deine <strong>addmatrix()</strong> genauer an:</p>
<pre><code class="language-cpp">int** addmatrix (int **matrix3)
{   
    int dim1=0;
    int **matrix;
    int **matrix2;
    int w=0,q=0;
    int summe=0;
    for (int q =0; q&lt;dim1; q++)
        {   
        for ( int w =0; w&lt;dim1; w++)        //Matrizenaddition
            {   
            summe=0;
            summe = matrix[q][w] + matrix2[q][w];
            matrix3[q][w]=summe;
            }
        }
return (matrix3);
}
</code></pre>
<p>In der zweiten und dritten Zeile deklarierst Du die Variablen <strong>matrix</strong> und <strong>matrix2</strong> vom Typ <strong>int</strong>**. Da Du diesen Variablen NIE einen Wert zuteilst, erhälst Du</p>
<p>a) sog. <strong>undefiniertes Verhalten</strong> da Du nicht weißt wie das Program darauf im Laufe der Ausführung reagiert und<br />
b) die Fehlermeldungen die Du gerade gepostet hast.</p>
<p>Diese beiden Variablen werden nie mit irgendwelchen Werten gefüllt, bzw. die Pointer nie irgendwo hin gelget, trotzdem verwendest Du sie aber, als ob es nicht so wäre. Da solltest Du anfangen...</p>
<p>EDIT: Sehe gerade, Du hast die beiden Variablen jetzt mit 0 initialisiert. Dürfte Dir aber trotzdem nichts bringen, da sie dennoch nie einen &quot;echten&quot; Wert haben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532958</guid><dc:creator><![CDATA[PuerNoctis]]></dc:creator><pubDate>Fri, 20 Jun 2008 16:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 17:48:10 GMT]]></title><description><![CDATA[<p>Hallo wie habe ich das zu verstehen das sie keinen echten Wert haben? Was kann ich tun um das ganze lauffähig zu bekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532977</guid><dc:creator><![CDATA[ChrisTucker]]></dc:creator><pubDate>Fri, 20 Jun 2008 17:48:10 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 18:00:07 GMT]]></title><description><![CDATA[<p>ChrisTucker schrieb:</p>
<blockquote>
<p>Hallo wie habe ich das zu verstehen das sie keinen echten Wert haben? Was kann ich tun um das ganze lauffähig zu bekommen?</p>
</blockquote>
<p>Du hast dort lediglich einen Zeiger. Du musst da also irgendwo noch den Speicher reservieren für das Array, dass sich dann da dahinter befindet. Also mit new/delete([]) arbeiten. Aber bevor du jetzt das einfach mal irgendwie probierst, würde ich dir empfehlen mal die Grundlagen nochmal zu checken. Vor allem über Zeiger, Array's, dynamische Speicheranforderung (new) usw.<br />
Es hat keinen Sinn da jetzt einfach etwas reinzusetzen, wo du nicht verstehst, was es macht. Das kostet nur Nerven (unsere und deine).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532985</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 20 Jun 2008 18:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 18:05:08 GMT]]></title><description><![CDATA[<p>Was ich auch noch kurz anmerken wollte:</p>
<pre><code class="language-cpp">void main()
</code></pre>
<p>ist weder C noch C++</p>
<p>es muss</p>
<pre><code class="language-cpp">int main ()
</code></pre>
<p>heißen</p>
<p>bb ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532990</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 20 Jun 2008 18:05:08 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Update Programmabstürze on Fri, 20 Jun 2008 18:14:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Du musst das so sehen:</p>
<pre><code class="language-cpp">int **matrix = 0; // = NULL
</code></pre>
<p>Mit dieser Zeile deklarierst Du, wie es für eine einfache Matrix auch richtig ist, einen Zeiger, auf einen Zeiger, auf einen Integer. Somit erhälst Du eine quasi zweidimensionale Matrix - soweit ist das ja korrekt. Was Du damit bis jetzt jedoch erreichst ist nur, dass Du dem Programm sagst, dass es eine Matrix gibt, aber nicht was da drin steht, geschweigedenn wo sie sich überhaupt im Speicher Deines Rechners befindet.</p>
<p>Da wir Dir geraten haben Deine Variablen zu initialisieren, hast Du das <strong>'= 0;'</strong> dahinter geschrieben. Wird das hier so an dieser Stelle gemacht, legst Du gleichzeitig fest, auf welche Stelle im Speicher Dein Pointer zeigen soll - in diesem Fall NULL, was salopp ausgedrückt so viel bedeutet wie &quot;in ein schwarzes Loch&quot;.</p>
<p>Wenn Du Dir mal ganz kurz Deine <strong>mat1()</strong> anschaust, siehst Du, wie Du neuen Speicher reservierst und gleichzeitig die Postition Deiner Matrix festlegst:</p>
<pre><code class="language-cpp">matrix = new int* [dim1];
for (i = 0; i &lt; dim1; i++)
    matrix[i] = new int[dim2];
</code></pre>
<p>Zuerst allokierst Du Speicher für Deine erste Dimension der Matrix, dann läufst Du mit der Schleife durch jede durch, und allokierst die Zweite. Somit ist in dem Fall Deine Matrix fest definiert (die Werte die da jetzt aber defacto drinstehen sind zu diesem Zeitpunkt unwillkürlich).</p>
<p>Noch einmal zurückgesprungen zu Deiner Deklaration in <strong>addmatrix()</strong> fehlt diese Speicherzuordnung völlig. Du verwendest praktisch etwas, was garnicht, oder besser ausgedrückt irgendwo wo es nicht zu finden ist, verwendest.</p>
<p>Ich habe jetzt zwei Gedanken:</p>
<ol>
<li>
<p>Du hast einfach vergessen die Pointer Deiner Matrix irgendwo hin zu legen, oder</p>
</li>
<li>
<p>Du hattest Dir gedacht, dass die Variablen in Deiner <strong>mat1()</strong> und der <strong>addmatrix()</strong> ein und diesselben sind. Das ist allerdings ein falscher Gedanke, denn sie teilen sich nur den Namen, nicht den Speicherbereich. Du könntest, falls ich mit dieser Vermutung richtig liege, besagte Variablen entweder global deklarieren, damit sie im gesamten Namensraum gelten unabhängig vom Gültikeitsbereich der Funktionen, oder Du übergibst die Pointer mittels Rückgabewerten und Übergabeparametern irgendwie von <strong>mat1()</strong> nach <strong>addmatrix()</strong>.</p>
</li>
</ol>
<p>P.S.: Jedesmal, wenn Du mit dem <strong>new</strong>-Operator Speicher allokierst, passiert das dynamisch - er wird auf dem Heap anstatt auf dem Stack abgelegt. Solange Du keine &quot;intelligenten&quot; Zeiger verwendest (was Du hier nicht machst), bist Du selber dafür verantwortlich, dass dieser Speicher wieder freigegeben wird sobald Du ihn nicht mehr benötigst. Tust Du das nicht frisst Dir Dein Programm bei jeder Ausführung immer etwas Speicher weg ohne dass es ihn wieder hergibt. Bei Deinem kleinen Programm jetzt nicht unbedingt schlimm, aber bei größeren Projekten wirklich fatal. Freigeben kannst Du den Speicher mittels dem Operator <strong>delete</strong> und seinem Derivat <strong>delete[]</strong>:</p>
<pre><code class="language-cpp">#define SIZE 128
int *i = new int;         // Speicher wird allokiert
int *i2 = new int[SIZE];  // Speicher wird allokiert
delete i;       // Speicher wird freigegeben
delete[] i2;    // Speicher wird freigegeben
</code></pre>
<p>und die Anmerkung von unskilled: Recht hat er <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>EDIT: Und drakon hat recht. Gerade Zeiger sind ein essentielles aber genauso komplexes Thema. Wenn Du da unsicherheiten hast, versuche einige kleinere Übungen mit Pointern und Referenzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532992</guid><dc:creator><![CDATA[PuerNoctis]]></dc:creator><pubDate>Fri, 20 Jun 2008 18:14:26 GMT</pubDate></item></channel></rss>