<?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[Frage zu dynamische Erzeugung]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>was ist denn der Unterschied zwischen folgenden Textzeilen:</p>
<pre><code class="language-cpp">TestKlasse *test[5];

TestKlasse *test = new TestKlasse[5];
</code></pre>
<p>In der ersten Zeile würde ich dann nach und nach die OBjekte mit new anlegen. Aber wo ist hier der Unterschied im Bezug auf Array?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285846/frage-zu-dynamische-erzeugung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 05:09:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285846.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 28 Apr 2011 18:46:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 18:46:08 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>was ist denn der Unterschied zwischen folgenden Textzeilen:</p>
<pre><code class="language-cpp">TestKlasse *test[5];

TestKlasse *test = new TestKlasse[5];
</code></pre>
<p>In der ersten Zeile würde ich dann nach und nach die OBjekte mit new anlegen. Aber wo ist hier der Unterschied im Bezug auf Array?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2055712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055712</guid><dc:creator><![CDATA[Noob11]]></dc:creator><pubDate>Thu, 28 Apr 2011 18:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 18:48:31 GMT]]></title><description><![CDATA[<p>Noob11 schrieb:</p>
<blockquote>
<p>nach und nach die OBjekte mit new anlegen ... Unterschied</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2055713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055713</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Thu, 28 Apr 2011 18:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 18:53:49 GMT]]></title><description><![CDATA[<p>Die erste Zeile erzeugt ein Array von fünf Zeigern (die noch ins Nirvana verweisen). Die zweite Zeile erzeugt einen Zeiger, der auf ein einen Speicherplatz mit fünf Objekten verweist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2055718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055718</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 28 Apr 2011 18:53:49 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 20:16:59 GMT]]></title><description><![CDATA[<p>Erste Variante kann man dann nehmen, wenn man vorher weiß wie viele Elemente das Array haben wird. Die zweite Variante kann man dann nehmen, wenn die Anzahl der Elemente erst zur Laufzeit bekannt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2055755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055755</guid><dc:creator><![CDATA[fghfgh]]></dc:creator><pubDate>Thu, 28 Apr 2011 20:16:59 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 20:28:24 GMT]]></title><description><![CDATA[<p>fghfgh schrieb:</p>
<blockquote>
<p>Erste Variante kann man dann nehmen, wenn man vorher weiß wie viele Elemente das Array haben wird. Die zweite Variante kann man dann nehmen, wenn die Anzahl der Elemente erst zur Laufzeit bekannt ist.</p>
</blockquote>
<p>Wenn da kein * wäre, hättest Du Recht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2055758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055758</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Thu, 28 Apr 2011 20:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 20:29:44 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>danke für die Antworten!</p>
<p>Wie lösche ich dann die Objekte wieder mit delete?</p>
<p>Bei der ersten Zeile geht das ja so:</p>
<pre><code class="language-cpp">delete test[0];
</code></pre>
<p>und dann halt noch für die anderen Objekte.</p>
<p>Hier wird dann einfach der Zeiger gelöscht, oder? Wenn kein Zeiger mehr auf einen Speicherplatz referenziert, wird dann automatisch der Speicherplatz freigegeben, oder wie läuft das ab?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2055761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055761</guid><dc:creator><![CDATA[Noob11]]></dc:creator><pubDate>Thu, 28 Apr 2011 20:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 20:36:19 GMT]]></title><description><![CDATA[<p>Noob11 schrieb:</p>
<blockquote>
<p>Hier wird dann einfach der Zeiger gelöscht, oder? Wenn kein Zeiger mehr auf einen Speicherplatz referenziert, wird dann automatisch der Speicherplatz freigegeben, oder wie läuft das ab?</p>
</blockquote>
<p>Nein, mit dem delete wird der Speicherplatz direkt freigegeben. C++ hat keinen Garbage Collector <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>Im zweiten Fall gibst du alle Elemente mit einem <code>delete[] test;</code> wieder frei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2055763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055763</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 28 Apr 2011 20:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 20:37:17 GMT]]></title><description><![CDATA[<p>Bei deinem Code wird der Speicherplatz, auf den der Zeiger test[0] zeigt, wieder zur Benutzung vom Betriebssystem freigegeben. Dein Zeiger zeigt aber immer noch dort hin. Bei der zweiten Variante brauchst du ein</p>
<pre><code class="language-cpp">delete[] test;
</code></pre>
<p>Das gibt den Speicherplatz der 5 aneinandergehängten Elemente frei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2055764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055764</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 28 Apr 2011 20:37:17 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 20:54:47 GMT]]></title><description><![CDATA[<p>Abend,<br />
Also erstmal: <em>delete</em> darf nur auf den Speicher angewendet werden, der mit <em>new</em> allokiert wurde.</p>
<p>Bei deinem ersten Beispiel... die Zeiger zeigen auf nichts das mit <em>new</em> angelegt wurde, deshalb kein <em>delete</em>. Um genau zu sein, zeigen dein 5 Zeiger irgendwo hin wo es gerade so Spaß macht.</p>
<p>Hier</p>
<pre><code class="language-cpp">TestKlasse *test = new TestKlasse[5]
</code></pre>
<p>allokierst du Speicher mit <em>new</em>, deshalb musst du ihn mit <em>delete</em> wieder freigeben. Da es sich hierbei um ein Array handelt machst du es so:</p>
<pre><code class="language-cpp">delete[] test;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2055767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055767</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 28 Apr 2011 20:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Thu, 28 Apr 2011 21:36:41 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>fghfgh schrieb:</p>
<blockquote>
<p>Erste Variante kann man dann nehmen, wenn man vorher weiß wie viele Elemente das Array haben wird. Die zweite Variante kann man dann nehmen, wenn die Anzahl der Elemente erst zur Laufzeit bekannt ist.</p>
</blockquote>
<p>Wenn da kein * wäre, hättest Du Recht.</p>
</blockquote>
<p>Recht hat er trotzdem <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="😉"
    /><br />
Auch wenn das erste nicht dem zweiten entspricht.<br />
Wenn man</p>
<pre><code class="language-cpp">int arr[5];
int* p = new int[5];
</code></pre>
<p>Dann sind einmal die 5 int auf dem Stack und einmal auf dem Heap. Bei dem obigen Beispiel, sind es im ersten Fall eben 5 Zeiger auf TestKlasse auf dem Stack und im zweiten Fall 5 TestKlasse Objekte auf dem Heap. Aber dies ändert nichts an der Tatsache, dass ich bei der ersten Variante ein konstanten Ausdruck brauche und bei der zweiten Variante nicht <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>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2055807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2055807</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Thu, 28 Apr 2011 21:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dynamische Erzeugung on Fri, 29 Apr 2011 11:49:02 GMT]]></title><description><![CDATA[<p>Noob11 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">TestKlasse *test[5];

TestKlasse *test = new TestKlasse[5];
</code></pre>
<p>[...] wo ist hier der Unterschied [...] ?</p>
</blockquote>
<p>In der ersten Zeile legst Du 5 Zeiger an, die jeweils uninitialisiert bleiben.</p>
<p>In der zweiten Zeile legst Du nur einen Zeiger an und lässt diesen auf das erste Element eines im Freispeicher erzeugten Arrays zeigen.</p>
<p>Möglicherweise ist das erste Sternchen bei Dir ein Versehen und es sollte</p>
<pre><code class="language-cpp">TestKlasse test[5];
</code></pre>
<p>heißen. Dann hättest Du 5 TestKlasse-Objekte im automatischen Speicher angelegt.</p>
<p>Guck in Deinem schlauen C++ Buch nach, was Du zu folgenden drei Speicherbereichen findest:<br />
- statischer Speicher<br />
- Automatischer Speicher (meist ein Stapelspeicher, &quot;Stack&quot;)<br />
- Freispeicher (auch bekannt unter &quot;Heap&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2056038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2056038</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 29 Apr 2011 11:49:02 GMT</pubDate></item></channel></rss>