<?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[Speicher wieder freigeben...]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe mal folgende Frage an Euch:</p>
<pre><code class="language-cpp">// Datenpuffer dynamisch erzeugen
m_pBuf = new char[m_lSize];
</code></pre>
<p>Dabei ist &quot;m_pBuf&quot; folgendermassen im Header-File definiert:</p>
<pre><code class="language-cpp">private:
  char* m_pBuf;
</code></pre>
<p>Nun möchte Ich natürlich diesen reservierten Speicher wieder freigeben, Ich habe das so gemacht:</p>
<pre><code class="language-cpp">// Speicher wieder freigeben
if (m_pBuf != NULL)
  delete [] m_pBuf;
</code></pre>
<p>Ist das so richtig, d.h. wird hier der komplette Speicher wieder freigegeben (Ich habe in meinem Programm keinen Destruktor definiert...)?</p>
<p>Danke schon mal<br />
-Jackler</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/6273/speicher-wieder-freigeben</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 06:35:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/6273.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Jun 2003 10:39:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicher wieder freigeben... on Fri, 20 Jun 2003 10:39:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe mal folgende Frage an Euch:</p>
<pre><code class="language-cpp">// Datenpuffer dynamisch erzeugen
m_pBuf = new char[m_lSize];
</code></pre>
<p>Dabei ist &quot;m_pBuf&quot; folgendermassen im Header-File definiert:</p>
<pre><code class="language-cpp">private:
  char* m_pBuf;
</code></pre>
<p>Nun möchte Ich natürlich diesen reservierten Speicher wieder freigeben, Ich habe das so gemacht:</p>
<pre><code class="language-cpp">// Speicher wieder freigeben
if (m_pBuf != NULL)
  delete [] m_pBuf;
</code></pre>
<p>Ist das so richtig, d.h. wird hier der komplette Speicher wieder freigegeben (Ich habe in meinem Programm keinen Destruktor definiert...)?</p>
<p>Danke schon mal<br />
-Jackler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/30464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/30464</guid><dc:creator><![CDATA[Jackler]]></dc:creator><pubDate>Fri, 20 Jun 2003 10:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wieder freigeben... on Fri, 20 Jun 2003 11:19:00 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Wo rufst du diese Zeilen dann auf ?</p>
<p>Du gibts den Speicher richtig frei !</p>
<p>Es ist aber besser das im Destructor zu machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/30465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/30465</guid><dc:creator><![CDATA[prolog]]></dc:creator><pubDate>Fri, 20 Jun 2003 11:19:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wieder freigeben... on Fri, 20 Jun 2003 18:31:00 GMT]]></title><description><![CDATA[<p>Zunächst mal vielen Dank für deine schnelle Hilfe, prolog...</p>
<p>Es handelt sich hier um eine dialogbasierte Anwendung...- bei Beenden des Programms (mittels des Buttons Exit) wird der Puffer gelöscht und damit der Speicher wieder freigegeben.</p>
<p>Gibt es eigentlich unter Visual Studio ein Tool, mit dem man überprüfen kann, ob auch sämtliche System-Resourcen (nach Beendigung des Programms), wie allokierter Speicher etc. wieder freigegeben werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/30466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/30466</guid><dc:creator><![CDATA[Jackler]]></dc:creator><pubDate>Fri, 20 Jun 2003 18:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wieder freigeben... on Fri, 20 Jun 2003 20:31:00 GMT]]></title><description><![CDATA[<p>moin,<br />
ich kenn mich mit der speicherfreigabe von c++ nicht so gut aus, weiss aber das die auch teilweise fehler hat. aber wird beim beenden des programms nicht auf jeden fall der speicher automatisch wieder frei gegeben, ohne das man eingreifen müsste?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/30467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/30467</guid><dc:creator><![CDATA[Emperor_L0ser]]></dc:creator><pubDate>Fri, 20 Jun 2003 20:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wieder freigeben... on Sat, 21 Jun 2003 07:21:00 GMT]]></title><description><![CDATA[<p>HI</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6254">@emperor</a></p>
<p>Nein, für speicher den du dynamisch auf dem Heap alloziert hast, bist du verantworlich ihn wieder frei zugeben. Wenn das programm beendet ist, werden zwar die Bereiche wieder überschrieben, von evtl. anderen Anwendungen, trotzdem sollte man darauf achten dass man keine Memleaks hat...<br />
Die sind erstma vergeudeter speicher und können in ungünstigen Umständen zu undefiniertem Verhalten führen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/30468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/30468</guid><dc:creator><![CDATA[prolog]]></dc:creator><pubDate>Sat, 21 Jun 2003 07:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wieder freigeben... on Sat, 21 Jun 2003 08:14:00 GMT]]></title><description><![CDATA[<p>Wenn du dein Programm mit dem VisualStudio debuggst und dann das Programm beendest und es Memoryleaks gab, dann steht das in den Debuggerausgaben: &quot;Detected Memoryleaks!&quot; und dann , wo sie entdeckt wurden und was dort steht.<br />
Deine Abfrage mit</p>
<pre><code class="language-cpp">if(m_pBuf != NULL)
</code></pre>
<p>is zwar nciht dumm, bei dir aber auch nicht sinnvoll, da du m_pBuf nirgendwo mit NULL initialisierst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/30469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/30469</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Sat, 21 Jun 2003 08:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wieder freigeben... on Sat, 21 Jun 2003 08:38:00 GMT]]></title><description><![CDATA[<p>und außerdem ist delete auf einen NULL Zeiger harmlos. also ist die abfrage einfach nur sinnlos</p>
]]></description><link>https://www.c-plusplus.net/forum/post/30470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/30470</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 21 Jun 2003 08:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wieder freigeben... on Sat, 21 Jun 2003 12:45:00 GMT]]></title><description><![CDATA[<p>Hey danke leute, sollte ich in zukunft mal drauf achten <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>
]]></description><link>https://www.c-plusplus.net/forum/post/30471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/30471</guid><dc:creator><![CDATA[Emperor_L0ser]]></dc:creator><pubDate>Sat, 21 Jun 2003 12:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wieder freigeben... on Sat, 21 Jun 2003 13:32:00 GMT]]></title><description><![CDATA[<p>Meine Abfrage,</p>
<pre><code class="language-cpp">if(m_pBuf != NULL)
</code></pre>
<p>ob der Pointer &quot;m_pBuf&quot; auf NULL zeigt ist insofern nicht sinnlos, da der Zeiger im Konstruktor meiner Dialogklasse zuerst mal auf NULL gesetzt wird.<br />
Nur wenn der Benutzer einen Button namens &quot;Connect&quot; drückt, wird auch der Puffer dynamisch (Heap) allokiert...- beendet der Benutzer hingegen das Programm nach Aufruf sofort wieder (d.h. es wurde ja noch gar kein Speicher für den Puffer angelegt), kann Ich natürlich keinen Speicher freigeben, der nicht vorher von mir allokiert wurde (--&gt; daher die Abfrage nach NULL).</p>
<p>Trotzdem danke für die vielen Beiträge.</p>
<p>MfG<br />
-Jackler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/30472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/30472</guid><dc:creator><![CDATA[Jackler]]></dc:creator><pubDate>Sat, 21 Jun 2003 13:32:00 GMT</pubDate></item></channel></rss>