<?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[[c++ - Dynamische Speicherverwaltung] - Allgemeine Fragen]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>setze mich gerade mit c++ und der dynamischen Speicherverwaltung auseinander.</p>
<p>Folgendes:</p>
<p>Ich erstelle zur Laufzeit einen <em>INTEGER</em> Array:</p>
<pre><code class="language-cpp">OneClass::OneClass(int _randomN)
{
	digits = new int[4];
	int faktor=1000;

	for(int i=0; i &lt; 4; i++)
	{
		digits[i] = i;		
	}

	delete[] digits;	//Muss ich den Pointer hier schon freigeben?
}
</code></pre>
<p>Wenn ich jetzt in meinen weiteren Funktionen auf das Array zugreifen möchte, kommt eine Compiler Meldung, dass es Zugriffsverletzung bei der Adresse XXYYYZZ gab.</p>
<p>so sieht mein überladener operator dann aus:</p>
<pre><code class="language-cpp">OneClass::operator int(){

	int number = 0, factor = 1; 
	for( int i = 3; i &gt;= 0; i--  ) {    
		number += digits[ i ] * factor;  // Hier kommt es zur Zugriffsverletzung, was könnte der Fehler sein?
		factor *= 10;  
	}  
	return number;

}
</code></pre>
<p>noch eine frage, wird der operator() immer impilzit aufgerufen?</p>
<p>zb:</p>
<pre><code class="language-cpp">OneClass   computerNumber;  
cout &lt;&lt; computer Number   &lt;&lt; endl;
</code></pre>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302267/c-dynamische-speicherverwaltung-allgemeine-fragen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 14:06:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302267.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Apr 2012 21:31:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [c++ - Dynamische Speicherverwaltung] - Allgemeine Fragen on Sat, 14 Apr 2012 21:31:07 GMT]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>setze mich gerade mit c++ und der dynamischen Speicherverwaltung auseinander.</p>
<p>Folgendes:</p>
<p>Ich erstelle zur Laufzeit einen <em>INTEGER</em> Array:</p>
<pre><code class="language-cpp">OneClass::OneClass(int _randomN)
{
	digits = new int[4];
	int faktor=1000;

	for(int i=0; i &lt; 4; i++)
	{
		digits[i] = i;		
	}

	delete[] digits;	//Muss ich den Pointer hier schon freigeben?
}
</code></pre>
<p>Wenn ich jetzt in meinen weiteren Funktionen auf das Array zugreifen möchte, kommt eine Compiler Meldung, dass es Zugriffsverletzung bei der Adresse XXYYYZZ gab.</p>
<p>so sieht mein überladener operator dann aus:</p>
<pre><code class="language-cpp">OneClass::operator int(){

	int number = 0, factor = 1; 
	for( int i = 3; i &gt;= 0; i--  ) {    
		number += digits[ i ] * factor;  // Hier kommt es zur Zugriffsverletzung, was könnte der Fehler sein?
		factor *= 10;  
	}  
	return number;

}
</code></pre>
<p>noch eine frage, wird der operator() immer impilzit aufgerufen?</p>
<p>zb:</p>
<pre><code class="language-cpp">OneClass   computerNumber;  
cout &lt;&lt; computer Number   &lt;&lt; endl;
</code></pre>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202068</guid><dc:creator><![CDATA[inek68]]></dc:creator><pubDate>Sat, 14 Apr 2012 21:31:07 GMT</pubDate></item><item><title><![CDATA[Reply to [c++ - Dynamische Speicherverwaltung] - Allgemeine Fragen on Sat, 14 Apr 2012 21:42:19 GMT]]></title><description><![CDATA[<p>Nur zur Sicherheit: Du machst das nur um mal zu sehen wie das ginge, nicht weil du nicht weißt, dass es alles was man für dynamische Speicherverwaltung braucht fertig (und in der Regel besser) in der Standardbibliothek gibt?</p>
<p>Ich spekuliere mal auf den typischen Anfängerfehler: Regel der großen Drei verletzt.</p>
<p>Ein weiteres gutes Google-Stichwort neben der &quot;Regel der großen Drei&quot; ist &quot;RAII&quot;.</p>
<p>edit: Ach nein. Du gibst den Speicher doch schon im Konstruktor wieder frei! Wie soll das denn funktionieren? Ist doch klar, dass das nicht geht. Vielleicht erst einmal noch Grundlagen zu Klassen, Konstruktoren und Lebenszeit von Objekten vertiefen, sonst verstehst du die Treffer zu den obigen Stichpunkten gar nicht richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202070</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 14 Apr 2012 21:42:19 GMT</pubDate></item><item><title><![CDATA[Reply to [c++ - Dynamische Speicherverwaltung] - Allgemeine Fragen on Sat, 14 Apr 2012 21:42:24 GMT]]></title><description><![CDATA[<p>Eigentlich ist es doch gar nicht so schwer. Wenn du im Konstruktor dein Array wieder löscht, kannst du wohl später nicht mehr darauf zugreifen. Richtigerweise müsstest du es im Destruktor löschen.</p>
<p>Ansonsten gibts bessere Alternativen in der STL, die da wären std::array und std::vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202073</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 14 Apr 2012 21:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to [c++ - Dynamische Speicherverwaltung] - Allgemeine Fragen on Sat, 14 Apr 2012 21:45:03 GMT]]></title><description><![CDATA[<p>WoW, wie schnell ich ne Antwort drauf bekomme. Danke</p>
<p>Also, da es mehr um das didaktische geht, sollen wir laut Aufgabenstellung dass mit der Dynamischen Speicherverwaltung machen. In der Aufgabenstellung ist ebenfalls vermerkt, dass es auch anders geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202074</guid><dc:creator><![CDATA[inek68]]></dc:creator><pubDate>Sat, 14 Apr 2012 21:45:03 GMT</pubDate></item><item><title><![CDATA[Reply to [c++ - Dynamische Speicherverwaltung] - Allgemeine Fragen on Sat, 14 Apr 2012 21:50:11 GMT]]></title><description><![CDATA[<p>so,</p>
<p>der Fehler mal visualisiert.</p>
<p>Aufruf:<br />
main.cpp</p>
<p><a href="http://prntscr.com/84k4c" rel="nofollow">http://prntscr.com/84k4c</a></p>
<p>Fehler:</p>
<p><a href="http://www.abload.de/img/screenshot_19ybfy.png" rel="nofollow">http://www.abload.de/img/screenshot_19ybfy.png</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202076</guid><dc:creator><![CDATA[inek68]]></dc:creator><pubDate>Sat, 14 Apr 2012 21:50:11 GMT</pubDate></item><item><title><![CDATA[Reply to [c++ - Dynamische Speicherverwaltung] - Allgemeine Fragen on Sun, 15 Apr 2012 06:23:33 GMT]]></title><description><![CDATA[<p>Warum kompliziert wenn es auch einfach geht?</p>
<p>Falls es immer nur 4 Elemente sind, geht auch</p>
<pre><code class="language-cpp">class dings
{
  ...
  int bums[4];
  ...
};
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">#include &lt;array&gt;

...

class dings
{
  ...
  std::array&lt;int,4&gt; bums;
  ...
};
</code></pre>
<p>und sonst</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

...

class dings
{
  ...
  std::vector&lt;int&gt; bums; // größe kann sich auch zur Laufzeit entscheiden oder ändern
  ...
};
</code></pre>
<p>Kein new und kein delete in Sicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202114</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 15 Apr 2012 06:23:33 GMT</pubDate></item><item><title><![CDATA[Reply to [c++ - Dynamische Speicherverwaltung] - Allgemeine Fragen on Sun, 15 Apr 2012 06:33:42 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Warum kompliziert wenn es auch einfach geht?</p>
</blockquote>
<p>Weil er das offensichtlich lernen will, wie er schreibt. Finde ich auch nichts daran auszusetzen, solange man das wirklich nur zum Lernen macht.<br />
Was allerdings etwas sinnlos ist: Ihm wurde jetzt 2 mal gesagt er solle das Zeug im Destruktor freigeben, aber durchgelesen hat er sich das scheinbar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202115</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 15 Apr 2012 06:33:42 GMT</pubDate></item></channel></rss>