<?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[delete notwendig?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich komme aus dem Java-Lager und bin nicht so mit der Speicherverwaltung in c++ so vertraut.</p>
<p>In einer Methode lege ich 3 temporäre Vektoren an:</p>
<pre><code>vector&lt;Icon*&gt; iconsInFrontLayer;
vector&lt;Icon*&gt; iconsInMiddleLayer;
vector&lt;Icon*&gt; iconsInBackLayer;
</code></pre>
<p>Muss ich am Ende dieser Methode die Vektoren wieder löschen, da sie danach nicht mehr gebraucht werden? Wenn ja, wie mache ich das?</p>
<p>Grüße<br />
Alex</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226574/delete-notwendig</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 18:59:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226574.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Nov 2008 09:46:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 09:46:30 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich komme aus dem Java-Lager und bin nicht so mit der Speicherverwaltung in c++ so vertraut.</p>
<p>In einer Methode lege ich 3 temporäre Vektoren an:</p>
<pre><code>vector&lt;Icon*&gt; iconsInFrontLayer;
vector&lt;Icon*&gt; iconsInMiddleLayer;
vector&lt;Icon*&gt; iconsInBackLayer;
</code></pre>
<p>Muss ich am Ende dieser Methode die Vektoren wieder löschen, da sie danach nicht mehr gebraucht werden? Wenn ja, wie mache ich das?</p>
<p>Grüße<br />
Alex</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609283</guid><dc:creator><![CDATA[filth]]></dc:creator><pubDate>Mon, 03 Nov 2008 09:46:30 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 09:48:51 GMT]]></title><description><![CDATA[<p>Nein wenn du diese so temproär anlegt werden sie automatisch wieder gelöscht</p>
<p>allerdings müssten evtl. die Icon Objekte auf die pointer (Icon*) verweisen gelöscht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609288</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 03 Nov 2008 09:48:51 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 09:54:34 GMT]]></title><description><![CDATA[<p>Nein, musst Du nicht. Vektoren rufen beim Verlassen des Scopes in dem sie sich befinden automatisch die Destruktoren der gespeicherten Objekte auf.<br />
Wenn du allerings <strong>Zeiger auf Objekte</strong> die Du mit <code>new</code> erzeugt hast im Vektor ablegst, musst Du alle Elemente im Vektor auch mit delete wieder freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609290</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 03 Nov 2008 09:54:34 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 09:52:02 GMT]]></title><description><![CDATA[<p>Vielen Dank!</p>
<blockquote>
<p>allerdings müssten evtl. die Icon Objekte auf die pointer (Icon*) verweisen gelöscht werden.</p>
</blockquote>
<p>Meinst Du damit die Objekte in den Vektoren? Wenn ja, die werden noch gebraucht und sollten nicht gelöscht werden <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>
<blockquote>
<p>Dein, musst Du nicht. Vektoren rufen beim Verlassen des Scopes in dem sie sich befinden automatisch die Destruktoren der gespeicherten Objekte auf.</p>
</blockquote>
<p>Also sollten meine Icon-Objekte sich im eignen Destructor löschen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609292</guid><dc:creator><![CDATA[filth]]></dc:creator><pubDate>Mon, 03 Nov 2008 09:52:02 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 09:57:40 GMT]]></title><description><![CDATA[<p>filth schrieb:</p>
<blockquote>
<p>Vielen Dank!</p>
<blockquote>
<p>allerdings müssten evtl. die Icon Objekte auf die pointer (Icon*) verweisen gelöscht werden.</p>
</blockquote>
<p>Meinst Du damit die Objekte in den Vektoren? Wenn ja, die werden noch gebraucht und sollten nicht gelöscht werden <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>
<blockquote>
<p>Dein, musst Du nicht. Vektoren rufen beim Verlassen des Scopes in dem sie sich befinden automatisch die Destruktoren der gespeicherten Objekte auf.</p>
</blockquote>
<p>Also sollten meine Icon-Objekte sich im eignen Destructor löschen?</p>
</blockquote>
<p>Ganz einfache Regel:<br />
<strong>Alles, was Du mit new angelegt hast, musst Du auch mit delete wieder freigeben.</strong><br />
Du speicherst keine Icon-Objekte im Vektor, sondern Zeiger auf Iconobjekte. Also werden auch nie die Icon-Objekte zerstört, sondern nur die Zeiger. Wenn die Icons mit new angelegt wurden, und die Zeiger darauf zerstört wurden, bevor Du die referenzierten Objekte mit delete wieder freiegegben hast, hast Du ein Speicherleck.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609295</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 03 Nov 2008 09:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 09:57:54 GMT]]></title><description><![CDATA[<p>Du solltest die Icon-Objekte dort manuell löschen wo es nötig ist. Was deine vectoren da oben von alleine löscht sind nur die Pointer, nicht die Objekte selbst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609296</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 03 Nov 2008 09:57:54 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 10:04:24 GMT]]></title><description><![CDATA[<p>Die Icon Objekte müssen beim Verlassen der Anwendung gelöscht werden.</p>
<p>Der destructor sieht momentan so aus:</p>
<pre><code class="language-cpp">// Free memory when closing
Icon::~Icon() {
	pTextureLoader-&gt;FreeTexture(&amp;m_MyWallTexture);
}
</code></pre>
<p>Was passiert mit dem Speicher, wenn ich die Anwendung schließe und die Objekte nicht gelöscht habe? Bleibt der Speicher belegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609299</guid><dc:creator><![CDATA[filth]]></dc:creator><pubDate>Mon, 03 Nov 2008 10:04:24 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 10:10:21 GMT]]></title><description><![CDATA[<p>filth schrieb:</p>
<blockquote>
<p>Die Icon Objekte müssen beim Verlassen der Anwendung gelöscht werden.</p>
<p>Der destructor sieht momentan so aus:</p>
<pre><code class="language-cpp">// Free memory when closing
Icon::~Icon() {
	pTextureLoader-&gt;FreeTexture(&amp;m_MyWallTexture);
}
</code></pre>
<p>Was passiert mit dem Speicher, wenn ich die Anwendung schließe und die Objekte nicht gelöscht habe? Bleibt der Speicher belegt?</p>
</blockquote>
<p>Das hängt von der Plattform ab. Bei Windows werden Image/Icon-Handles <strong>nicht</strong> wieder freigegeben.<br />
Man sollte grundsätzlich angeforderte Ressourcen <strong>immer</strong> frei geben. Auch, wenn man weiss, dass einem das Betriebssystem hinterher räumt (z.B. bei Speicher).<br />
Wenn Du die Icon-Objekte mit new angelegt hast, und kein delete machst, wird der Icon-Destructor nie aufgerufen!</p>
<p>Wie wird denn Dein Vektor befüllt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609304</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 03 Nov 2008 10:10:21 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 10:12:51 GMT]]></title><description><![CDATA[<p>Ok verstehe! Die Plattform ist in meinem Fall Windows.</p>
<blockquote>
<p>Wie wird denn Dein Vektor befüllt?</p>
</blockquote>
<p>Das mache ich so:</p>
<pre><code class="language-cpp">iconPointer = new Icon(&quot;DIRECTORY&quot;, _x, _y, _z, wfd.cFileName, objectIndex);
iconVector.push_back(iconPointer);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1609306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609306</guid><dc:creator><![CDATA[filth]]></dc:creator><pubDate>Mon, 03 Nov 2008 10:12:51 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 10:16:04 GMT]]></title><description><![CDATA[<p>filth schrieb:</p>
<blockquote>
<p>Ok verstehe! Die Plattform ist in meinem Fall Windows.</p>
<blockquote>
<p>Wie wird denn Dein Vektor befüllt?</p>
</blockquote>
<p>Das mache ich so:</p>
<pre><code class="language-cpp">iconPointer = new Icon(&quot;DIRECTORY&quot;, _x, _y, _z, wfd.cFileName, objectIndex);
iconVector.push_back(iconPointer);
</code></pre>
</blockquote>
<p>Dann ist doch eigentlich klar, was zu tun ist:</p>
<p>tachyon schrieb:</p>
<blockquote>
<p><strong>Alles, was Du mit new angelegt hast, musst Du auch mit delete wieder freigeben.</strong></p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1609307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609307</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 03 Nov 2008 10:16:04 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 10:20:41 GMT]]></title><description><![CDATA[<p>zu schnell.. ignore me</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609313</guid><dc:creator><![CDATA[filth]]></dc:creator><pubDate>Mon, 03 Nov 2008 10:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 10:28:17 GMT]]></title><description><![CDATA[<p>So nochmal nachgedacht:</p>
<p>Ich bin etwas verwirrt.</p>
<p>Meine Struktur ist folgendermaßen:</p>
<p>in der main erzeuge ich einen</p>
<pre><code>IconGetter myIcons;
</code></pre>
<p>der wiederum verwaltet diesen Vektor, von dem Elemente vom Typ Icon (eigene) Klasse drin stehen.</p>
<p>Muss ich dann in der &quot;exit&quot; - Methode der main myIcons deleten oder die einzelnen Icon-Objekte im Vektor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609318</guid><dc:creator><![CDATA[filth]]></dc:creator><pubDate>Mon, 03 Nov 2008 10:28:17 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 10:34:24 GMT]]></title><description><![CDATA[<p>filth schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p><strong>Alles, was Du mit new angelegt hast, musst Du auch mit delete wieder freigeben.</strong></p>
<p>Was ist daran so schwer zu verstehen?</p>
<pre><code class="language-cpp">IconGetter myIcons; //wurde NICHT mit new angelegt, also auch kein delete
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1609321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609321</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 03 Nov 2008 10:34:24 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 10:36:10 GMT]]></title><description><![CDATA[<p>Exit Methoden sind hier fehl am Platz. Nutz einfach die Macht des Destruktors.</p>
<p>Wenn du dein Objekt iconVector in einer Klasse hast, dann musst du dafür sorgen, dass, wenn das Objekt gelöscht wird auch wieder aller Speicher, den du in iconVector gesammelt hast wieder freigibst. Und das kannst du genau im Destruktor machen, dem egal ist, wie das Objekt zerstört wird (exception, am Ender der main, oder irgendwann mit einem delete). Der Destruktor wird immer aufgerufen, also musst du genau dort alle Elemente, die du per new angefordert hast und in iconVector gespeichert hast auch wieder mit delete freigeben. (ich sage micht Absicht, dass du die mit new angelegt haben mussts, da du auch ohne weiteres ein automatisches Objekt haben kannst und in iconVector schieben, was aber strengstens vermieden werden sollte. Da du im dtor ja nicht mehr weisst, welches das war und ein delete auf ein bereits gelöschtes Objekt kann fatale Folgen habe..)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609324</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 03 Nov 2008 10:36:10 GMT</pubDate></item><item><title><![CDATA[Reply to delete notwendig? on Mon, 03 Nov 2008 10:38:00 GMT]]></title><description><![CDATA[<p>Kapiert, danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1609325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1609325</guid><dc:creator><![CDATA[filth]]></dc:creator><pubDate>Mon, 03 Nov 2008 10:38:00 GMT</pubDate></item></channel></rss>