<?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[problem bei delete]]></title><description><![CDATA[<p>ich habe in etwa folgenden code:</p>
<pre><code class="language-cpp">classA::classA()
{	
	m_pointerA = NULL;
	m_pointerB = NULL;

	m_pointerA = new classB();
}

classA::~classA()
{
	if(m_pointerA)
	{
		delete m_pointerA;
	}

	if(m_pointerB)
	{
		delete m_pointerB; // PROBLEM
	}

}
</code></pre>
<p>meiner meinung nach sollte das programm ja nicht an die // PROBLEM<br />
stelle kommen.</p>
<p>was kann da schieflaufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/136320/problem-bei-delete</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 15:43:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/136320.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 09 Feb 2006 09:02:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 09:02:11 GMT]]></title><description><![CDATA[<p>ich habe in etwa folgenden code:</p>
<pre><code class="language-cpp">classA::classA()
{	
	m_pointerA = NULL;
	m_pointerB = NULL;

	m_pointerA = new classB();
}

classA::~classA()
{
	if(m_pointerA)
	{
		delete m_pointerA;
	}

	if(m_pointerB)
	{
		delete m_pointerB; // PROBLEM
	}

}
</code></pre>
<p>meiner meinung nach sollte das programm ja nicht an die // PROBLEM<br />
stelle kommen.</p>
<p>was kann da schieflaufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989877</guid><dc:creator><![CDATA[asr]]></dc:creator><pubDate>Thu, 09 Feb 2006 09:02:11 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 09:11:37 GMT]]></title><description><![CDATA[<p>erstens: Wie äußert sich das Problem? (Fehlermeldung, evt. etwas Quellcode)</p>
<p>zweitens: Die defaultmäßig bereitgestellten Copy-Ctoren und Zuweisungsoperatoren kommen mit dynamisch reserviertem Speicher nicht klar - da solltest du dir selber welche anfertigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989882</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Thu, 09 Feb 2006 09:11:37 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 09:21:10 GMT]]></title><description><![CDATA[<p>o.k.<br />
naja zuerst einmal geht er in den body der<br />
if-abfrage obwohl ja im konstruktor der pointer auf NULL gesetzt wurde.<br />
der pointer wird dann auch bis zum destruktor nicht mehr angerührt.</p>
<p>beim delete bekomme ich dann eine unhandled exeption at 0xirgendwas.<br />
funktion</p>
<pre><code class="language-cpp">void operator delete(
        void *pUserData
        )
{
...
  /* verify block type */
    _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead-&gt;nBlockUse)); //HIER

    ...
}
</code></pre>
<p>Access violation reading location 0xcdcdcdc1.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989895</guid><dc:creator><![CDATA[asr]]></dc:creator><pubDate>Thu, 09 Feb 2006 09:21:10 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 09:26:01 GMT]]></title><description><![CDATA[<p>Setz' mal einen Breakpoint auf den Anfang des Destruktor's und schau dir an, was in den Member-Variablen drinsteht.</p>
<p>(btw, interessanter (und nützlicher für die Diagnose) wäre übrigens der Code gewesen, in dem du deine Klasse nutzt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989898</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Thu, 09 Feb 2006 09:26:01 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 09:54:54 GMT]]></title><description><![CDATA[<p>o.k.</p>
<pre><code class="language-cpp">classA::~classA()
{
	 :arrow_right: if(m_pointerA)
	{
		delete m_pointerA;
	}

	if(m_pointerB)
	{
		delete m_pointerB; // PROBLEM
	}

}
</code></pre>
<p>breakpoint beim pfeil.<br />
m_pointerA=0x008c09f0<br />
m_pointerB=cdcdcdcdcd</p>
<p>code dazwischen ist recht viel.<br />
pointerB wird jedoch ausser im konstruktor und im destruktor nicht verwendet!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989937</guid><dc:creator><![CDATA[asr]]></dc:creator><pubDate>Thu, 09 Feb 2006 09:54:54 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 10:02:01 GMT]]></title><description><![CDATA[<p>asr schrieb:</p>
<blockquote>
<p>m_pointerB=cdcdcdcdcd</p>
</blockquote>
<p>Das ist der Wert, den MSVC in der Debug-Version uninitialisierten Variablen gibt. Erstellst du überhaupt ein Objekt dieser Klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989939</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 09 Feb 2006 10:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 09:59:21 GMT]]></title><description><![CDATA[<p>asr schrieb:</p>
<blockquote>
<p>pointerB wird jedoch ausser im konstruktor und im destruktor nicht verwendet!</p>
</blockquote>
<p>Sicher? Wozu verwendest du ihn dann?</p>
<p>btw, versuch mal dein Programm auf, das nötigste zu beschränken - tritt der Fehler immer noch auf, wenn du nur ein classA-Objekt anlegst und wieder freigibst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989942</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Thu, 09 Feb 2006 09:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 10:29:56 GMT]]></title><description><![CDATA[<p>ich habe nun eine überfrüfung gleich in den konstruktor gemacht.</p>
<p>und das programm will wieder beide deletes ausführen.<br />
if(pointer != NULL)<br />
oder<br />
if(pointer != 0)<br />
ändert auch nichts daran</p>
<pre><code class="language-cpp">classA::classA()
{	
	m_pointerA = NULL;
	m_pointerB = NULL;

	m_pointerA = new classB();

	if(m_pointerA)
	{
		delete m_pointerA;
	}

	if(m_pointerB)
	{
		delete m_pointerB; 
	}
}
</code></pre>
<p>noch eine andere idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989968</guid><dc:creator><![CDATA[asr]]></dc:creator><pubDate>Thu, 09 Feb 2006 10:29:56 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 10:37:01 GMT]]></title><description><![CDATA[<p>Verwende mal eine Initialisierungsliste:</p>
<pre><code class="language-cpp">classA::classA() : m_pointerA(new classB()), m_pointerB(NULL)
{
  cout&lt;&lt;&quot;A:&quot;&lt;&lt;(void*)m_pointerA&lt;&lt;&quot;\nB:&quot;&lt;&lt;(void*)m_pointerB&lt;&lt;endl;
}
</code></pre>
<p>(btw, wie sind eigentlich die Member-Variablen genau definiert?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/989975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/989975</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Thu, 09 Feb 2006 10:37:01 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 11:38:21 GMT]]></title><description><![CDATA[<p>mit initlialisierungsliste klappt es!</p>
<p>thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/990028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/990028</guid><dc:creator><![CDATA[asr]]></dc:creator><pubDate>Thu, 09 Feb 2006 11:38:21 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Thu, 09 Feb 2006 13:56:57 GMT]]></title><description><![CDATA[<p>vielleicht geht der optimizer der ms-compilers ja noch davon aus, daß der pointer automatisch auf 0 initialisiert wird und entfernt deshalb bm_pointerB = NULL. warscheinlich ein compilerfehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/990131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/990131</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Thu, 09 Feb 2006 13:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Fri, 10 Feb 2006 08:37:52 GMT]]></title><description><![CDATA[<p>asr schrieb:</p>
<blockquote>
<p>und das programm will wieder beide deletes ausführen.</p>
</blockquote>
<p>Dann machst du aber etwas im ctor, was du uns verschweigst. Ein Compilerfehler ist es mit Sicherheit nicht. Zumindest kann ich das von der aktuellen Version behaupten. Die if Abfragen sind übrigens unnötig, das macht delete schon selber. Und m_pointerA mit einem Nullzeiger zu initialisieren, macht in deinem Beispiel auch keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/990645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/990645</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 10 Feb 2006 08:37:52 GMT</pubDate></item><item><title><![CDATA[Reply to problem bei delete on Tue, 14 Feb 2006 07:50:16 GMT]]></title><description><![CDATA[<p>groovemaster schrieb:</p>
<blockquote>
<p>asr schrieb:</p>
<blockquote>
<p>und das programm will wieder beide deletes ausführen.</p>
</blockquote>
<p>Dann machst du aber etwas im ctor, was du uns verschweigst. Ein Compilerfehler ist es mit Sicherheit nicht. Zumindest kann ich das von der aktuellen Version behaupten. Die if Abfragen sind übrigens unnötig, das macht delete schon selber. Und m_pointerA mit einem Nullzeiger zu initialisieren, macht in deinem Beispiel auch keinen Sinn.</p>
</blockquote>
<p>will ja gar nicht abstreiten dass das etwas komisch klingt <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>allerdings habe ich den ganzen abschnitt umgeschrieben, dieses mal eine initilisierungsliste verwendet und dann ging es.<br />
der code war auch nur schematisch, in wirklichkeit passieren an dieser stelle noch viele andere sachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/993657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/993657</guid><dc:creator><![CDATA[asr]]></dc:creator><pubDate>Tue, 14 Feb 2006 07:50:16 GMT</pubDate></item></channel></rss>