<?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[[erledigt]new und delete - ich kanns, verstehs aber nicht -.-]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich habe da eine Frage, was <code>new</code> und <code>delete</code> angeht. Naja, es ist eher eine allgemeine Frage: Zu was gebraucht man das überhaupt?! Ja schön, um Speicher auf dem Heap zu reservieren - weiß ich auch - jedoch wozu, wann oder warum brauch man das in einem Programm? Ich komme da einfach nicht mehr weiter, mit dem was im Buch steht und suche nach einer einfachen Dummie-Erklärung.</p>
<p>Bei was macht <code>new</code> und <code>delete</code> Sinn?<br />
Was für Nachteile hätte man, wenn man das nicht benutzen würde?</p>
<p>Wenn ich <code>new</code> und <code>delete</code> nicht verstehe kann ich nicht fortfahren an meinem Buch zu lernen (weil das für die nächsten Listings nötig ist).</p>
<p>PS: Die Makros <code>new</code> und <code>delete</code> habe ich vor 1-2 Jahren schon mal versucht zu erlernen - mit Misserfolg. Das frustrierte mich sogar so sehr, dass ich für ein halbes Jahr mein C++-Buch in die Ecke schmiss und mit dem, was ich bisher gelernt habe über die Runden zu kommen. -.-</p>
<p>Hoffe, dass mir einer helfen kann, damit ich so schnell wie Möglich weiter am Buch lernen kann. Danke jeder Antwort...</p>
<p>Liebe verzweifelte Grüße,<br />
Spiri</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282607/erledigt-new-und-delete-ich-kanns-verstehs-aber-nicht</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 00:34:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282607.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Feb 2011 21:19:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [erledigt]new und delete - ich kanns, verstehs aber nicht -.- on Tue, 22 Feb 2011 21:51:40 GMT]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>ich habe da eine Frage, was <code>new</code> und <code>delete</code> angeht. Naja, es ist eher eine allgemeine Frage: Zu was gebraucht man das überhaupt?! Ja schön, um Speicher auf dem Heap zu reservieren - weiß ich auch - jedoch wozu, wann oder warum brauch man das in einem Programm? Ich komme da einfach nicht mehr weiter, mit dem was im Buch steht und suche nach einer einfachen Dummie-Erklärung.</p>
<p>Bei was macht <code>new</code> und <code>delete</code> Sinn?<br />
Was für Nachteile hätte man, wenn man das nicht benutzen würde?</p>
<p>Wenn ich <code>new</code> und <code>delete</code> nicht verstehe kann ich nicht fortfahren an meinem Buch zu lernen (weil das für die nächsten Listings nötig ist).</p>
<p>PS: Die Makros <code>new</code> und <code>delete</code> habe ich vor 1-2 Jahren schon mal versucht zu erlernen - mit Misserfolg. Das frustrierte mich sogar so sehr, dass ich für ein halbes Jahr mein C++-Buch in die Ecke schmiss und mit dem, was ich bisher gelernt habe über die Runden zu kommen. -.-</p>
<p>Hoffe, dass mir einer helfen kann, damit ich so schnell wie Möglich weiter am Buch lernen kann. Danke jeder Antwort...</p>
<p>Liebe verzweifelte Grüße,<br />
Spiri</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025008</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Tue, 22 Feb 2011 21:51:40 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt]new und delete - ich kanns, verstehs aber nicht -.- on Tue, 22 Feb 2011 21:25:10 GMT]]></title><description><![CDATA[<p>Das macht bei allem Sinn, wo man erst zur Laufzeit weiß, wieviel Speicher man denn nun braucht oder wieviele Objekte von bestimmten Typ etc. Beispielsweise könntest du eine Datei komplett in den Speicher lesen wollen, du kennst die Datei aber während des Schreibens des Programms noch nicht so genau, weißt daher also auch nicht, wieviel Speicher du dafür benötigst.<br />
Also fragst du beim Betriebssystem zur Laufzeit, wie groß die Datei ist, forderst mit new genügend Speicher an und lädst die Datei dann in diesen Speicherbereich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025011</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 22 Feb 2011 21:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt]new und delete - ich kanns, verstehs aber nicht -.- on Tue, 22 Feb 2011 21:32:28 GMT]]></title><description><![CDATA[<p>Hmm, so langsam geht mir ein Licht auf. Ich versuchs mal in eigenen Worten zu fassen:</p>
<p>Wenn man zum Beispiel ein Array hat und nicht weiß, wie viele Felder es braucht, so gebraucht man new und delete um es im Laufe des Programms herauszufinden?</p>
<p>Mal ganz grob erklärt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025015</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Tue, 22 Feb 2011 21:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt]new und delete - ich kanns, verstehs aber nicht -.- on Tue, 22 Feb 2011 21:39:25 GMT]]></title><description><![CDATA[<p>Ein Beispiel aus der Praxis:<br />
Ich habe eine Klasse Sprite welche die Daten für ein Quadrat in OpenGL enthält. Wenn ich diese in einen STL-Container wie list oder vector stecke, werden die Daten kopiert. Da ich davon zur Laufzeit aber eine endliche Menge N habe, das in den Tausender-Bereich gehen kann (Stichwort: Partikel), dann ist das ganz schön langsam.<br />
Erzeuge ich die Daten auf dem Heap und merk mir nur die Pointer oder erzeuge eine einfach verlinkte Liste, dann ist das eine Zeit- und Speichereinsparung. Und ab einer gewissen Menge merkt man das.<br />
Ausserdem werden auf dem Heap erzeugte Objekte beim verlassen einer Funktion nicht zertört.</p>
<pre><code class="language-cpp">void foobar()
{
   MyClass A;
   MyClass* B = new MyClass();

  // A wird hier jetzt zerstört, B lebt weiter (und würde in diesem fall auch ein speicherleck erzeugen da es nie zerstört wird)
};
</code></pre>
<blockquote>
<p>Wenn man zum Beispiel ein Array hat und nicht weiß, wie viele Felder es braucht, so gebraucht man new und delete um es im Laufe des Programms herauszufinden?</p>
</blockquote>
<p>Kommt fast hin:</p>
<pre><code class="language-cpp">void foobar(int size)
{
    int myArray[size*5]; // &lt;- geht nicht, gibt einen compilerfehler
    int *myArray = new int[size*5]; // &lt;- funktioniert
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2025017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025017</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Tue, 22 Feb 2011 21:39:25 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt]new und delete - ich kanns, verstehs aber nicht -.- on Tue, 22 Feb 2011 21:48:32 GMT]]></title><description><![CDATA[<p>Minispiri schrieb:</p>
<blockquote>
<p>Hmm, so langsam geht mir ein Licht auf. Ich versuchs mal in eigenen Worten zu fassen:</p>
<p>Wenn man zum Beispiel ein Array hat und nicht weiß, wie viele Felder es braucht, so gebraucht man new und delete um es im Laufe des Programms herauszufinden?</p>
<p>Mal ganz grob erklärt...</p>
</blockquote>
<p>z.B. Ja. Nicht um herauszufinden wie viel, aber um genug Speicher anzufordern.</p>
<p>Sagen wir du hast eine Datei die du auslesen möchtest. Jede Zeile willst du in einem String-Array unterbringen. Nun könntest du dein Array 100 Zeilen groß machen, aber was, wenn die Datei mehr Zeilen hat? Dann könntest du die Zeilen zählen und danach einen Array mit passender Größe mit &quot;new&quot; erstellen ohne die Gefahr einen zu kleinen Arrays zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025023</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Tue, 22 Feb 2011 21:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt]new und delete - ich kanns, verstehs aber nicht -.- on Tue, 22 Feb 2011 21:50:54 GMT]]></title><description><![CDATA[<p>Hmmm, ich glaube ich habs jetzt einigermaßen verstanden.</p>
<p>Danke für die Antworten, werde mich dann aber wieder melden, falls wieder Unklarheiten auftreten sollten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2025025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2025025</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Tue, 22 Feb 2011 21:50:54 GMT</pubDate></item></channel></rss>