<?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[Frage beim verhalten von delete]]></title><description><![CDATA[<p>Hallo,<br />
Ich schreibe gerade eine verlinkte Liste mit Klassen.</p>
<pre><code>linkedList::linkedList()
{
	startPtr = new Startnode;
};

linkedList::~linkedList()
{
	delete startPtr;
};

class Startnode : public Node
{
private:
	Node* next;
public:
	Startnode();
	~Startnode(){}
	void print();
	Node* insert(Computer* Data);
};

Startnode::Startnode()
{
	next = new Endnode;
}
</code></pre>
<p>Wenn startPtr wieder freigegeben wird, bleibt der reservierte Speicher für Endnode im ehemaligen startPtr bestehen, nur der Speicher für den Pointer wird gelöscht, d.h. auf der Adresse vom nicht mehr existenten next ist immer noch nicht freigegebener Speicher. Oder?</p>
<p>Müsste ich jetzt noch im Destruktor von Startnode folgendes schreiben?</p>
<pre><code>Startnode()::~Startnode()
{
	delete next;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/314843/frage-beim-verhalten-von-delete</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 17:41:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/314843.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Mar 2013 21:04:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage beim verhalten von delete on Fri, 15 Mar 2013 21:04:53 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich schreibe gerade eine verlinkte Liste mit Klassen.</p>
<pre><code>linkedList::linkedList()
{
	startPtr = new Startnode;
};

linkedList::~linkedList()
{
	delete startPtr;
};

class Startnode : public Node
{
private:
	Node* next;
public:
	Startnode();
	~Startnode(){}
	void print();
	Node* insert(Computer* Data);
};

Startnode::Startnode()
{
	next = new Endnode;
}
</code></pre>
<p>Wenn startPtr wieder freigegeben wird, bleibt der reservierte Speicher für Endnode im ehemaligen startPtr bestehen, nur der Speicher für den Pointer wird gelöscht, d.h. auf der Adresse vom nicht mehr existenten next ist immer noch nicht freigegebener Speicher. Oder?</p>
<p>Müsste ich jetzt noch im Destruktor von Startnode folgendes schreiben?</p>
<pre><code>Startnode()::~Startnode()
{
	delete next;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2307032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2307032</guid><dc:creator><![CDATA[vec4]]></dc:creator><pubDate>Fri, 15 Mar 2013 21:04:53 GMT</pubDate></item><item><title><![CDATA[Reply to Frage beim verhalten von delete on Fri, 15 Mar 2013 21:12:29 GMT]]></title><description><![CDATA[<p>Startnode? Endnode? Wtf? Wie wäre es mit node*? Abgesehen davon wird der Pointer selbst nirgends freigegeben, das geht gar nicht, der liegt auf dem Stack. delete gibt immer das frei, worauf der Pointer zeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2307033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2307033</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 15 Mar 2013 21:12:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage beim verhalten von delete on Fri, 15 Mar 2013 21:26:26 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Startnode? Endnode? Wtf? Wie wäre es mit node*? Abgesehen davon wird der Pointer selbst nirgends freigegeben, das geht gar nicht, der liegt auf dem Stack. delete gibt immer das frei, worauf der Pointer zeigt.</p>
</blockquote>
<p>Hast du meine Frage richtig gelesen? Wenn ich einen Speicherbereich der auf dem Heap liegt freigebe, der einen Pointer auf ein weiteres Objekt im Heap hat, wird dann auch dieser Speicher gelöscht oder wird nur der Pointer gelöscht, da dort nicht delete verwendet wurde.</p>
<pre><code>linkedList::linkedList()
{
    startPtr = new Startnode; //Objekt im Heap
};

linkedList::~linkedList()
{
    delete startPtr; //Freigeben von Objekt
};

class Startnode : public Node
{
private:
    Node* next; //Ein Pointer, der beim insert auf ein Objekt im Heap zeigt
public:
    Startnode();
    ~Startnode(){}
    void print();
    Node* insert(Computer* Data);
};

Startnode::Startnode()
{
    next = new Endnode; //Wird der Speicher freigegeben, obwohl ich im Destruktor kein delete habe, wenn Startnode im Heap ist? Da im Buch, dass ich lese kein Destruktor definiert wurde und dies mich verwirrt
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2307034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2307034</guid><dc:creator><![CDATA[vec4]]></dc:creator><pubDate>Fri, 15 Mar 2013 21:26:26 GMT</pubDate></item><item><title><![CDATA[Reply to Frage beim verhalten von delete on Fri, 15 Mar 2013 21:29:19 GMT]]></title><description><![CDATA[<p>Das meinte ich:</p>
<pre><code>private:
    Node* next; //Ein Pointer, der nach dem Konstruktordurchlauf auf ein Objekt im Heap zeigt
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2307037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2307037</guid><dc:creator><![CDATA[vec4]]></dc:creator><pubDate>Fri, 15 Mar 2013 21:29:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage beim verhalten von delete on Fri, 15 Mar 2013 21:31:54 GMT]]></title><description><![CDATA[<p>Zu jedem new gehört ein delete und zu jedem new[] ein delete[].</p>
<p>Damit beantwortet sich die Frage von alleine. Wenn du also das Objekt mit new anlegst und das Objekt auch ein Objekt mit new anlegt, dann müssen beide mit delete freigegeben werden.</p>
<p>&quot;Automatisch&quot; passiert das nur, wenns im Destruktor abläuft. Denn delete ruft auch den Destruktor auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2307039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2307039</guid><dc:creator><![CDATA[klöklöklö]]></dc:creator><pubDate>Fri, 15 Mar 2013 21:31:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage beim verhalten von delete on Fri, 15 Mar 2013 21:35:08 GMT]]></title><description><![CDATA[<p>Danke für die Antwort. Wollte nur wirklich sicher gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2307041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2307041</guid><dc:creator><![CDATA[vec4]]></dc:creator><pubDate>Fri, 15 Mar 2013 21:35:08 GMT</pubDate></item></channel></rss>