<?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[ValidHeapPointer, templates]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich habe ein Problem mit dem heap. Genauer gesagt damit, Speicher frei zu geben:<br />
Ich Arbeite im folgenden mit einer Template Klasse 'TemplateTest' und<br />
einer einfachen Klasse 'CDummy'.</p>
<p>Ich benutze VC++ 6 und kompiliere im DEBUG-Modus.</p>
<p>In der Funktion main() erstelle ich dynamisch ein Feld von Instanzen der Klasse TemplateTest&lt;CDummy*&gt;<br />
und versuche anschließend den Speicher wieder frei zu geben.<br />
Hier liegt das Problem!! (Zeile: delete pList)</p>
<p>debug assertion failed<br />
Expression _CrtIsValidHeapPointer(pUserData)</p>
<p>Wieso landet das Feld nicht im heap? Oder tut es das? Was ist dann Kaputt???</p>
<p>Erstelle ich nur eine Instanz (mit new) gibt es keine Probleme. (TemplateTest&lt;CDummy*&gt;* pList = new TemplateTest&lt;CDummy*&gt;; delete pList;)</p>
<p>Ebenfalls keine Probleme gibt es, wenn ich den Destruktor in der Klasse TemplateTest auskommentiere.</p>
<p>Wo liegt das Problem??<br />
Vielen Dank für eure Hilfe!</p>
<pre><code class="language-cpp">template &lt;class T&gt; class TemplateTest
{
	public:
		TemplateTest()	{};
		~TemplateTest()	{};
};

class CDummy
{
	public:
		void do_nothing()	{}
};

int main()
{
    TemplateTest&lt;CDummy*&gt;* pList = new TemplateTest&lt;CDummy*&gt;[5];
    delete pList;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/120569/validheappointer-templates</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 09:21:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120569.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Sep 2005 13:23:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ValidHeapPointer, templates on Wed, 14 Sep 2005 13:36:44 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich habe ein Problem mit dem heap. Genauer gesagt damit, Speicher frei zu geben:<br />
Ich Arbeite im folgenden mit einer Template Klasse 'TemplateTest' und<br />
einer einfachen Klasse 'CDummy'.</p>
<p>Ich benutze VC++ 6 und kompiliere im DEBUG-Modus.</p>
<p>In der Funktion main() erstelle ich dynamisch ein Feld von Instanzen der Klasse TemplateTest&lt;CDummy*&gt;<br />
und versuche anschließend den Speicher wieder frei zu geben.<br />
Hier liegt das Problem!! (Zeile: delete pList)</p>
<p>debug assertion failed<br />
Expression _CrtIsValidHeapPointer(pUserData)</p>
<p>Wieso landet das Feld nicht im heap? Oder tut es das? Was ist dann Kaputt???</p>
<p>Erstelle ich nur eine Instanz (mit new) gibt es keine Probleme. (TemplateTest&lt;CDummy*&gt;* pList = new TemplateTest&lt;CDummy*&gt;; delete pList;)</p>
<p>Ebenfalls keine Probleme gibt es, wenn ich den Destruktor in der Klasse TemplateTest auskommentiere.</p>
<p>Wo liegt das Problem??<br />
Vielen Dank für eure Hilfe!</p>
<pre><code class="language-cpp">template &lt;class T&gt; class TemplateTest
{
	public:
		TemplateTest()	{};
		~TemplateTest()	{};
};

class CDummy
{
	public:
		void do_nothing()	{}
};

int main()
{
    TemplateTest&lt;CDummy*&gt;* pList = new TemplateTest&lt;CDummy*&gt;[5];
    delete pList;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/872017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872017</guid><dc:creator><![CDATA[mac_bu]]></dc:creator><pubDate>Wed, 14 Sep 2005 13:36:44 GMT</pubDate></item><item><title><![CDATA[Reply to ValidHeapPointer, templates on Wed, 14 Sep 2005 13:54:18 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">...
    delete [] pList;
    return 0;
    };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/872058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872058</guid><dc:creator><![CDATA[Cpt.Tanga]]></dc:creator><pubDate>Wed, 14 Sep 2005 13:54:18 GMT</pubDate></item><item><title><![CDATA[Reply to ValidHeapPointer, templates on Wed, 14 Sep 2005 14:55:39 GMT]]></title><description><![CDATA[<p>Vielen Dank Cpt.Tanga!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/872110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872110</guid><dc:creator><![CDATA[mac_bu]]></dc:creator><pubDate>Wed, 14 Sep 2005 14:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to ValidHeapPointer, templates on Wed, 14 Sep 2005 19:33:26 GMT]]></title><description><![CDATA[<p>[quote=&quot;Cpt.Tanga&quot;]</p>
<pre><code class="language-cpp">...
    delete [] pList;
    return 0;
    };
</code></pre>
<p>[/quote]<br />
Ist die Null nach dem return zwingend?</p>
<p>Hat der Debuggermodus Einfluß auf die Destructoren von Heap oder ähnlichen Speicherreferenzen?Wo liegen die grundsätzlichen Unterschiede zw. C++ und WIN32API im Hinblick auf die Kernel Objects? (Gültigkeit usw.)<br />
Für ein paar weiterreichende Anmerkungen wäre ich sehr dankbar!<br />
MfG<br />
Love</p>
]]></description><link>https://www.c-plusplus.net/forum/post/872313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/872313</guid><dc:creator><![CDATA[Buddy Love]]></dc:creator><pubDate>Wed, 14 Sep 2005 19:33:26 GMT</pubDate></item></channel></rss>