<?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[Templates: Speicher freigeben im Destruktor]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>für ein Uni-Projekt soll ich eine map (ass. array) selbst programmieren und in einem kleinen Programm mit der STL map &quot;vergleichen&quot;. Soweit, sogut. Meine map Klasse läuft wunderbar.</p>
<p>Eine Frage ist mir allerdings noch geblieben. Wir sollen die map Klasse als Template realisieren, zumindest den value Teil. Ich verwende mal für meinen Test einfach std::string als Typ. Somit kann ich im Destruktor einfach sowas schreiben wie</p>
<pre><code>val = &quot;&quot;;
</code></pre>
<p>Aber: Woher &quot;weiss&quot; ich im Destruktor, wie ich den Speicher für value freigeben kann? Ich meine, es muss ja nicht std::string, es könnte ja auch ein Objekt einer andere Klasse sein. In diesem Fall müsste ich ja dann eher ein</p>
<pre><code>delete val;
</code></pre>
<p>verwenden. Wie kann ich also bei Templates wissen, wie ich den Speicher freigeben kann, wenn ich bei der Programmierung gar nicht weiss, welche Datentyp verwendet wird?</p>
<p>Besten Dank im Voraus!<br />
Gruss, Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198904/templates-speicher-freigeben-im-destruktor</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 17:32:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198904.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Nov 2007 21:04:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates: Speicher freigeben im Destruktor on Mon, 26 Nov 2007 21:04:13 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>für ein Uni-Projekt soll ich eine map (ass. array) selbst programmieren und in einem kleinen Programm mit der STL map &quot;vergleichen&quot;. Soweit, sogut. Meine map Klasse läuft wunderbar.</p>
<p>Eine Frage ist mir allerdings noch geblieben. Wir sollen die map Klasse als Template realisieren, zumindest den value Teil. Ich verwende mal für meinen Test einfach std::string als Typ. Somit kann ich im Destruktor einfach sowas schreiben wie</p>
<pre><code>val = &quot;&quot;;
</code></pre>
<p>Aber: Woher &quot;weiss&quot; ich im Destruktor, wie ich den Speicher für value freigeben kann? Ich meine, es muss ja nicht std::string, es könnte ja auch ein Objekt einer andere Klasse sein. In diesem Fall müsste ich ja dann eher ein</p>
<pre><code>delete val;
</code></pre>
<p>verwenden. Wie kann ich also bei Templates wissen, wie ich den Speicher freigeben kann, wenn ich bei der Programmierung gar nicht weiss, welche Datentyp verwendet wird?</p>
<p>Besten Dank im Voraus!<br />
Gruss, Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1410618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1410618</guid><dc:creator><![CDATA[haimat]]></dc:creator><pubDate>Mon, 26 Nov 2007 21:04:13 GMT</pubDate></item><item><title><![CDATA[Reply to Templates: Speicher freigeben im Destruktor on Mon, 26 Nov 2007 21:12:34 GMT]]></title><description><![CDATA[<p>haimat schrieb:</p>
<blockquote>
<p>Wie kann ich also bei Templates wissen, wie ich den Speicher freigeben kann, wenn ich bei der Programmierung gar nicht weiss, welche Datentyp verwendet wird?</p>
</blockquote>
<p>Du musst ja nur den Speicher freigeben, den du auch holst. Du musst also gucken, wo du überall Speicher allokierst und eben diesen wieder freigibst.<br />
Wenn deine map z.B. Objekte verwaltet, wirst du den Speicher ja wahrscheinlich mit <code>new T[Anzahl];</code> oder mit malloc holen (kannste auch mal zeigen ;)). Und den Speicher musst du auch wieder freigeben.</p>
<p>Ich glaube aber bzgl des string-Objekts hast du andere Verständnisschwierigkeiten:</p>
<pre><code class="language-cpp">class A
{
    public:
        A() // Constructor
        {
            // Vor dem Eintritt in den Konstruktor dieser Klasse
            //  wird der Standard-Konstruktor von text aufgerufen
        }

        ~A() // Drstructor
        {
            // Nach dem Austritt aus dieser Funktion wird der Destruktor
            //   der string-Klasse aufgerufen, der automatisch all ihren
            //   Speicher freigibt.
            // text=&quot;&quot;; wäre unnützt und würde noch nicht mal allen Speicher
            // freigeben.
        }

    private:
        string text;
};
</code></pre>
<p>Soll heißen: Verwendet der Benutzer in deiner map Objekte wie string, dann geben die string-Objekte ihren eigenen Speicher selber frei. <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/1410626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1410626</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 26 Nov 2007 21:12:34 GMT</pubDate></item><item><title><![CDATA[Reply to Templates: Speicher freigeben im Destruktor on Mon, 26 Nov 2007 21:18:57 GMT]]></title><description><![CDATA[<p>Natürlich! der Destruktor wird ja selbst aufgerufen für den value Teil...<br />
Das mit dem String ist mir klar, ich mache das nur für mein eigenes Verständnis <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>Besten Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1410628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1410628</guid><dc:creator><![CDATA[haimat]]></dc:creator><pubDate>Mon, 26 Nov 2007 21:18:57 GMT</pubDate></item></channel></rss>