<?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[new und delete Operator]]></title><description><![CDATA[<p>Hi,</p>
<p>ich leg mir eine std:map oder ähnliches auf dem Heap an mit dem new Operator. Wenn ich diese nicht mehr benötige, lösche ich die map mit delete...</p>
<pre><code class="language-cpp">typedef std::map&lt;int, int&gt;	IntMap; 

IntMap *pMap = new IntMap(); 

//do somethign

//map wird unter bestimmten bedingungen gelöscht
delete pMap; 

//abfrage ob map bereits gelöscht worden ist oder nicht schlägt fehl...
if(pMap != NULL)
{ 

}
</code></pre>
<p>Die Map wird aufgrund der internen Programmsturktur nicht in jedem Fall gelöscht bzw. deleted, so dass sie auch bei der anschließenden if-Abfrage vorhanden sein kann. Allerdings ist es so, dass die if-Abfrage auch dann true ist, wenn die pMap bereits deleted worden ist. Wie kann ich das umgehen? Nur dadurch, dass ich nach dem delete -&gt; pMap = NULL schreibe????</p>
<p>Gruß<br />
Jens</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282343/new-und-delete-operator</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 07:17:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282343.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Feb 2011 11:53:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to new und delete Operator on Fri, 18 Feb 2011 11:53:59 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich leg mir eine std:map oder ähnliches auf dem Heap an mit dem new Operator. Wenn ich diese nicht mehr benötige, lösche ich die map mit delete...</p>
<pre><code class="language-cpp">typedef std::map&lt;int, int&gt;	IntMap; 

IntMap *pMap = new IntMap(); 

//do somethign

//map wird unter bestimmten bedingungen gelöscht
delete pMap; 

//abfrage ob map bereits gelöscht worden ist oder nicht schlägt fehl...
if(pMap != NULL)
{ 

}
</code></pre>
<p>Die Map wird aufgrund der internen Programmsturktur nicht in jedem Fall gelöscht bzw. deleted, so dass sie auch bei der anschließenden if-Abfrage vorhanden sein kann. Allerdings ist es so, dass die if-Abfrage auch dann true ist, wenn die pMap bereits deleted worden ist. Wie kann ich das umgehen? Nur dadurch, dass ich nach dem delete -&gt; pMap = NULL schreibe????</p>
<p>Gruß<br />
Jens</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022698</guid><dc:creator><![CDATA[Jens Ludwig]]></dc:creator><pubDate>Fri, 18 Feb 2011 11:53:59 GMT</pubDate></item><item><title><![CDATA[Reply to new und delete Operator on Fri, 18 Feb 2011 11:58:35 GMT]]></title><description><![CDATA[<p>Jens Ludwig schrieb:</p>
<blockquote>
<p>Nur dadurch, dass ich nach dem delete -&gt; pMap = NULL schreibe????</p>
</blockquote>
<p>Das ist der Standardweg mit rohen Zeigern. Die Frage ist, warum du diese überhaupt benutzen möchtest? Ich empfehle dir Smart Pointer, solltest du C++0x verwenden können dann den unique_ptr.</p>
<p>Die nächste Frage wäre, warum du die Map überhaupt auf den Heap anlegen möchtest? Reicht es nicht, die Map auf den Stack anzulegen, dann einfach mymap.clear(); aufzurufen und anschließend zu überprüfen, ob mymap.empty() ist?</p>
<p>mfg, NRWsoft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022702</guid><dc:creator><![CDATA[NRWsoft]]></dc:creator><pubDate>Fri, 18 Feb 2011 11:58:35 GMT</pubDate></item><item><title><![CDATA[Reply to new und delete Operator on Fri, 18 Feb 2011 12:44:06 GMT]]></title><description><![CDATA[<p>Und ich frage mich, wieso die Map vom Heap gelöscht werden kann und danach noch irgendwelche Zugriffe möglich sind. Wieso ist die Lebensdauer anders als beim übergeordneten Objekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022745</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 18 Feb 2011 12:44:06 GMT</pubDate></item><item><title><![CDATA[Reply to new und delete Operator on Fri, 18 Feb 2011 12:46:45 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Und ich frage mich, wieso die Map vom Heap gelöscht werden kann und danach noch irgendwelche Zugriffe möglich sind. Wieso ist die Lebensdauer anders als beim übergeordneten Objekt?</p>
</blockquote>
<p>Die Zugriffe auf freigegebenen Speicher sind undefiniertes Verhalten. Dazu zählt auch, dass sie funktionieren dürfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022748</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 18 Feb 2011 12:46:45 GMT</pubDate></item><item><title><![CDATA[Reply to new und delete Operator on Fri, 18 Feb 2011 13:01:28 GMT]]></title><description><![CDATA[<p>Meine Frage zielte nicht darauf, wieso das allgemein geht, sondern wieso das in seinem Context so möglich ist.</p>
<p>Wenn ich etwas dem Heap anlege, lösche ich es meistens trotzdem im dtor des Objektes, welches es hält, sodass ein Zugriff per se gar nicht mehr passieren <em>kann</em>. Jetzt gibt es tausend Fälle, wo das nicht der Fall sein muss, aber da die Frage sehr grundsätzlich ist, wollte ich auch prüfen, ob er da nicht vll. was unnötig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022760</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 18 Feb 2011 13:01:28 GMT</pubDate></item></channel></rss>