<?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[Den Speicher korrekt aufräumen]]></title><description><![CDATA[<p>So mal wieder etwas <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>
<p>Alle Objekte die ich mit <strong>new</strong> anlege werden nach dem beenden des Programm nicht wieder freigegeben bzw. ihr speicher wird nicht freigegeben.<br />
Alles andere schon oder? Also muss ich mich nur um die Objekte kümmern die ich mit new angelegt habe!?</p>
<p>Ok,<br />
nun habe ich in meinem Programm viele verschiedene Klassen, die wiederum verschiedenen Objekten enthalten.<br />
Angenommen ich habe in meinem Programm eine Klasse <strong>myClass</strong>.<br />
In dieser befinden sich Objekte von der Klasse <strong>mySubClass</strong>.</p>
<p><strong>myClass</strong> habe ich <strong>ohne</strong> <em>new</em> erzeugt, da dieses Objekt in meinem kompletten Code gültig ist.<br />
Die Objekte <strong>mySubClass</strong> die sich <strong>IN</strong> <strong>myClass</strong> befinden wurden mit <strong>new</strong> erzeugt.</p>
<p>Muss nun in dem Destruktor von <strong>myClass</strong> alle Objekte von <strong>mySubClass</strong> entfernt werden? Oder wie mache ich das genau?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227939/den-speicher-korrekt-aufräumen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 18:39:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227939.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Nov 2008 18:01:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Den Speicher korrekt aufräumen on Fri, 21 Nov 2008 18:01:47 GMT]]></title><description><![CDATA[<p>So mal wieder etwas <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>
<p>Alle Objekte die ich mit <strong>new</strong> anlege werden nach dem beenden des Programm nicht wieder freigegeben bzw. ihr speicher wird nicht freigegeben.<br />
Alles andere schon oder? Also muss ich mich nur um die Objekte kümmern die ich mit new angelegt habe!?</p>
<p>Ok,<br />
nun habe ich in meinem Programm viele verschiedene Klassen, die wiederum verschiedenen Objekten enthalten.<br />
Angenommen ich habe in meinem Programm eine Klasse <strong>myClass</strong>.<br />
In dieser befinden sich Objekte von der Klasse <strong>mySubClass</strong>.</p>
<p><strong>myClass</strong> habe ich <strong>ohne</strong> <em>new</em> erzeugt, da dieses Objekt in meinem kompletten Code gültig ist.<br />
Die Objekte <strong>mySubClass</strong> die sich <strong>IN</strong> <strong>myClass</strong> befinden wurden mit <strong>new</strong> erzeugt.</p>
<p>Muss nun in dem Destruktor von <strong>myClass</strong> alle Objekte von <strong>mySubClass</strong> entfernt werden? Oder wie mache ich das genau?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618506</guid><dc:creator><![CDATA[redbomber]]></dc:creator><pubDate>Fri, 21 Nov 2008 18:01:47 GMT</pubDate></item><item><title><![CDATA[Reply to Den Speicher korrekt aufräumen on Fri, 21 Nov 2008 18:08:58 GMT]]></title><description><![CDATA[<p>redbomber schrieb:</p>
<blockquote>
<p>Alle Objekte die ich mit <strong>new</strong> anlege werden nach dem beenden des Programm nicht wieder freigegeben bzw. ihr speicher wird nicht freigegeben.<br />
Alles andere schon oder? Also muss ich mich nur um die Objekte kümmern die ich mit new angelegt habe!?</p>
</blockquote>
<p>Mit new angelegte Variablen können bei Programmende automatisch freigegeben werden, es besteht jedoch keine Garantie. Besser, man verlässt sich nicht darauf.</p>
<p>redbomber schrieb:</p>
<blockquote>
<p>Muss nun in dem Destruktor von <strong>myClass</strong> alle Objekte von <strong>mySubClass</strong> entfernt werden? Oder wie mache ich das genau?</p>
</blockquote>
<p>Ja, was du angefordert hast, musst du auch wieder freigeben.</p>
<p>Wenn du im Konstruktor Speicherbereiche mit <code>new</code> anforderst (z.B. über die Initialisierungsliste):</p>
<pre><code class="language-cpp">myClass::myClass()
: Var1(new mySubClass)
, Var2(new mySubClass[3])
{

}
</code></pre>
<p>dann musst du diesen Speicher im Destruktor auch wieder freigeben.</p>
<pre><code class="language-cpp">myClass::~myClass()
{
    delete Var1;
    delete[] Var2;
}
</code></pre>
<p>Ausserdem solltest du immer gleich <em>die Grossen Drei</em> überladen, also zusätzlich noch Kopierkonstruktor und Zuweisungsoperator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618513</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 21 Nov 2008 18:08:58 GMT</pubDate></item><item><title><![CDATA[Reply to Den Speicher korrekt aufräumen on Fri, 21 Nov 2008 23:26:58 GMT]]></title><description><![CDATA[<p>Tatsächlich, ich habe gerade aus Interesse den ISO-Draft und ein Buch durchforstet und nichts gefunden. Allerdings dürfte bei den aktuellen Betriebssystemen das Speichermanagement des Kernels sich den Speicher wiederholen, den ein Prozess wärend der Laufzeit zugewiesen bekommen hat.</p>
<p>Aber gut, wenn man unter DOS oder so programmiert könnte das ja sogar relevant sein.</p>
<p>Wenn jemand was genaueres weiß: Würde mich auch interessieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618624</guid><dc:creator><![CDATA[Wirdbald]]></dc:creator><pubDate>Fri, 21 Nov 2008 23:26:58 GMT</pubDate></item></channel></rss>