<?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[Speicherfreigabe]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich habe folgende Klassenkonstruktion</p>
<pre><code class="language-cpp">class Cube
{
  Cube(); --&gt;allokiert Speicher
  ~Cube(); --&gt; gibt Speicher wieder frei
  float points[8][3];
  ...
}
class TemperatureCube : public Cube
{
  public
    TemperatureCube(); --&gt;??? soll Konstruktor von Cube aufrufen (:Cube())
    ~TemperatureCube(); --&gt;??? soll Dekonstruktor von Cube aufrufen (???)
    float eigenschaft;
   ...
}
class TemperaturField
{
  public:
    TemperaturField() --&gt; tut eigentlich nichts
    ~TemperaturField() --&gt; braucht meines Erachtens nichts zu tun, da vector die Speicherfreigabe organisiert
    vector&lt;vector&lt;TemperatureCube&gt; &gt; m_pTemperatures;
}
</code></pre>
<p>Ich habe eine Temperaturmatrix welche eine 2 Dimensionalen Vector mit TemperaturCube´s erzeugt. Bei der Erzeugung soll nun der Standardkonstruktor von TemperatureCube und Cube aufgerufen werden.</p>
<p>Beim Beenden des Programmes sollt natürlich der ganze allokierte Speicher wieder freigegeben werden. Da die Vector-Klasse dies in der Klasse TemperaturField selber vornimmt.<br />
Allerdings bekomme ich beim Beenden eine ganze Menge Fehler über nicht freigegebene Speicher. Der meines Erachtens aus der fehlenden Freigabe des Speichers der Cube-Klasse herrührt. Meine Versuche den Speicher freizugeben sind bis jetzt irgendwie alle fehlgeschlagen.</p>
<p>Kann mir vielleicht jemand mal eine Hilfestellung geben.</p>
<p>Vielen Dank</p>
<p>Maik</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/133517/speicherfreigabe</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 22:56:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/133517.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jan 2006 14:01:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherfreigabe on Wed, 18 Jan 2006 14:18:02 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich habe folgende Klassenkonstruktion</p>
<pre><code class="language-cpp">class Cube
{
  Cube(); --&gt;allokiert Speicher
  ~Cube(); --&gt; gibt Speicher wieder frei
  float points[8][3];
  ...
}
class TemperatureCube : public Cube
{
  public
    TemperatureCube(); --&gt;??? soll Konstruktor von Cube aufrufen (:Cube())
    ~TemperatureCube(); --&gt;??? soll Dekonstruktor von Cube aufrufen (???)
    float eigenschaft;
   ...
}
class TemperaturField
{
  public:
    TemperaturField() --&gt; tut eigentlich nichts
    ~TemperaturField() --&gt; braucht meines Erachtens nichts zu tun, da vector die Speicherfreigabe organisiert
    vector&lt;vector&lt;TemperatureCube&gt; &gt; m_pTemperatures;
}
</code></pre>
<p>Ich habe eine Temperaturmatrix welche eine 2 Dimensionalen Vector mit TemperaturCube´s erzeugt. Bei der Erzeugung soll nun der Standardkonstruktor von TemperatureCube und Cube aufgerufen werden.</p>
<p>Beim Beenden des Programmes sollt natürlich der ganze allokierte Speicher wieder freigegeben werden. Da die Vector-Klasse dies in der Klasse TemperaturField selber vornimmt.<br />
Allerdings bekomme ich beim Beenden eine ganze Menge Fehler über nicht freigegebene Speicher. Der meines Erachtens aus der fehlenden Freigabe des Speichers der Cube-Klasse herrührt. Meine Versuche den Speicher freizugeben sind bis jetzt irgendwie alle fehlgeschlagen.</p>
<p>Kann mir vielleicht jemand mal eine Hilfestellung geben.</p>
<p>Vielen Dank</p>
<p>Maik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969759</guid><dc:creator><![CDATA[Opor]]></dc:creator><pubDate>Wed, 18 Jan 2006 14:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfreigabe on Wed, 18 Jan 2006 14:07:34 GMT]]></title><description><![CDATA[<p>Opor schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class Cube
{
  Cube(); --&gt;allokiert Speicher
  ~Cube(); --&gt; gibt Speicher wieder frei
  points[8][3] = ...;
  ...
}
</code></pre>
</blockquote>
<p>Was soll denn das &quot;points[8][3]=...&quot; an dieser Stelle? In der Klassendeklaration dürfen keine Anweisungen stehen.</p>
<blockquote>
<p>Ich habe eine Temperaturmatrix welche eine 2 Dimensionalen Vector mit TemperaturCube´s erzeugt. Bei der Erzeugung soll nun der Standardkonstruktor von TemperatureCube und Cube aufgerufen werden.</p>
</blockquote>
<p>Der Konstruktor von TemperaturCube ruft automatisch den Default-Konstruktor von Cube auf, bevor er seine eigenen Anweisungen abarbeitet, genauso ruft der Destruktor nach den eigenen Aufräumarbeiten den Destruktor der Basisklasse auf.</p>
<blockquote>
<p>Beim Beenden des Programmes sollt natürlich der ganze allokierte Speicher wieder freigegeben werden. Da die Vector-Klasse dies in der Klasse TemperaturField selber vornimmt.</p>
</blockquote>
<p>Der vom Vektor belegte Speicher wird vom Vektor selber aufgeräumt. Was deine Objekte noch zusätzlich anfordern, mußt du auch selber wieder aufräumen.</p>
<blockquote>
<p>Allerdings bekomme ich beim Beenden eine ganze Menge Fehler über nicht freigegebene Speicher. Der meines Erachtens aus der fehlenden Freigabe des Speichers der Cube-Klasse herrührt. Meine Versuche den Speicher freizugeben sind bis jetzt irgendwie alle fehlgeschlagen.</p>
</blockquote>
<p>Wie sehen denn diese Versuche aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969762</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Wed, 18 Jan 2006 14:07:34 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfreigabe on Wed, 18 Jan 2006 14:17:22 GMT]]></title><description><![CDATA[<p>points sollte bloss als Pseudocode dienen, um eigentlich den Speicher zu verdeutlichen den ich in der Basisklasse anlegen. War aus Versehen an der Falschen stelle platziert.</p>
<p>Okay, dass habe ich mir auch schon so gedacht. Leider wird der Speicher der von der Klasse Cube belegt wird nicht wirklich freigeben. -&gt;MemoryLeaks.<br />
Im Konstruktor der Klasse Cube mittels new allokiert und im Dekonstruktor mittels delete freigeben. Wenn ich die Klasse Cube ohne die abgeleitete Klasse nutze, funktioniert es.</p>
<p>Ich weiß aber nun nicht warum immernoch Speicherfehler kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969771</guid><dc:creator><![CDATA[Opor]]></dc:creator><pubDate>Wed, 18 Jan 2006 14:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfreigabe on Wed, 18 Jan 2006 14:24:20 GMT]]></title><description><![CDATA[<p>Ohne konkreten Code (die Fragmente da oben reichen nicht für den Überblick) wird es recht schwer, da etwas zu diagnostizieren.</p>
<p>So sollte es eigentlich funktionieren:</p>
<pre><code class="language-cpp">class Cube
{
public:
  Cube() {m_data=new string[10];}
  ~Cube() {delete[] m_data;}
private:
  string* m_data;
};

class TemperaturCube : public Cube
{
public:
  TemperaturCube() {m_data2=100;}
  ~TemperaturCube() {}
private:
  int m_data2;
};

class TemperaturFeld
{
public:
  ...
private:
  vector&lt;vector&lt;TemperaturCube&gt; &gt; m_feld;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/969776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969776</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Wed, 18 Jan 2006 14:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfreigabe on Wed, 18 Jan 2006 14:41:28 GMT]]></title><description><![CDATA[<p>Hier wird aber noch ein CopyCtor für Cube und TemperaturCube benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969785</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 18 Jan 2006 14:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfreigabe on Wed, 18 Jan 2006 14:57:03 GMT]]></title><description><![CDATA[<p>Trotzdem vielen Dank erstmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969807</guid><dc:creator><![CDATA[Opor]]></dc:creator><pubDate>Wed, 18 Jan 2006 14:57:03 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfreigabe on Wed, 18 Jan 2006 15:16:54 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Hier wird aber noch ein CopyCtor für Cube und TemperaturCube benötigt.</p>
</blockquote>
<p>Ups, stimmt (zumindest für Cube - der TemperaturCube-CopyCtor sollte damit richtig arbeiten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/969829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/969829</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 Jan 2006 15:16:54 GMT</pubDate></item></channel></rss>