<?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[[Gelöst] Operator new[] und delete[] in Templates]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine generische Klasse, mit der ich Zeitmessungen für verschiedene Datentypen vornehme.</p>
<p>Allerdings habe ich ein Problem mit dem new[]/delete[]-Operator.</p>
<p>Deklariere ich einen generischen Pointer so, funktioniert der delete-Operator:</p>
<pre><code>T* varPointer = new T;
delete varPointer;
varPointer = NULL;
</code></pre>
<p>Wende ich das ganze auf ein generisches Array an, funktioniert es nicht mehr und er stürzt beim Ausführen von delete[] ab:</p>
<pre><code>T* varArr = new T[length];
delete[] varArr;
varArr = NULL;
</code></pre>
<p>Deklariere ich denselben Code mit einem festen Datentypen, funktioniert es wieder:</p>
<pre><code>int* debArr = new int[5];
delete[] debArr;
debArr = NULL;
</code></pre>
<p>Wie muss ich den delete[]-Operator auf den generischen Datentypen anwenden oder ist dies gar nicht möglich?</p>
<p>Viele Grüße,</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286022/gelöst-operator-new-und-delete-in-templates</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 03:22:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286022.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 May 2011 10:24:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst] Operator new[] und delete[] in Templates on Mon, 02 May 2011 12:16:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine generische Klasse, mit der ich Zeitmessungen für verschiedene Datentypen vornehme.</p>
<p>Allerdings habe ich ein Problem mit dem new[]/delete[]-Operator.</p>
<p>Deklariere ich einen generischen Pointer so, funktioniert der delete-Operator:</p>
<pre><code>T* varPointer = new T;
delete varPointer;
varPointer = NULL;
</code></pre>
<p>Wende ich das ganze auf ein generisches Array an, funktioniert es nicht mehr und er stürzt beim Ausführen von delete[] ab:</p>
<pre><code>T* varArr = new T[length];
delete[] varArr;
varArr = NULL;
</code></pre>
<p>Deklariere ich denselben Code mit einem festen Datentypen, funktioniert es wieder:</p>
<pre><code>int* debArr = new int[5];
delete[] debArr;
debArr = NULL;
</code></pre>
<p>Wie muss ich den delete[]-Operator auf den generischen Datentypen anwenden oder ist dies gar nicht möglich?</p>
<p>Viele Grüße,</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2057084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2057084</guid><dc:creator><![CDATA[Sir_Tobias]]></dc:creator><pubDate>Mon, 02 May 2011 12:16:58 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Operator new[] und delete[] in Templates on Mon, 02 May 2011 10:28:45 GMT]]></title><description><![CDATA[<p>Sir_Tobias schrieb:</p>
<blockquote>
<p>Wende ich das ganze auf ein generisches Array an, funktioniert es nicht mehr und er stürzt beim Ausführen von delete[] ab</p>
</blockquote>
<p>Dann hast Du irgendwo (anders) etwas falsch gemacht.</p>
<p>Gibt es einen besonderen Grund, warum Du new[]/delete[] statt std::vector benutzen willst?</p>
<p>Siehe auch<br />
<a href="http://drdobbs.com/blogs/cpp/229401975" rel="nofollow">http://drdobbs.com/blogs/cpp/229401975</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2057086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2057086</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 02 May 2011 10:28:45 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Operator new[] und delete[] in Templates on Mon, 02 May 2011 11:22:22 GMT]]></title><description><![CDATA[<p>Sir_Tobias schrieb:</p>
<blockquote>
<p>Wie muss ich den delete[]-Operator auf den generischen Datentypen anwenden oder ist dies gar nicht möglich?</p>
</blockquote>
<p>Es ist möglich, und zwar genau so wie du es hier angedeutet hast. Wo in deinem tatsächlichen Code der eigentliche Fehler liegt müsste sich rausfinden lassen. Dazu mach bitte folgendes:<br />
Reduziere deinen Code, indem du die folgenden Schritte mehrmals durchführst:</p>
<p>- finde einen Codeteil, der für das Problem nicht relevant ist und kommentiere ihn aus.<br />
- Compiliere neu und stelle sicher, dass das Problem immernoch besteht. (Falls nicht, hast du die Problemstelle grade auskommentiert)</p>
<p>Wenn du das so oft gemacht hast, dass nurnoch der Kern des Problems in möglichst wenig Code da ist (~20-50 Zeilen), dann stelle den Code mit den nötigen erklärenden Kommentaren versehen hier ins Forum, und wir können dir bestimmt weiterhelfen <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/2057103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2057103</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 02 May 2011 11:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Operator new[] und delete[] in Templates on Mon, 02 May 2011 12:16:34 GMT]]></title><description><![CDATA[<p>Den Fehler habe ich gefunden.<br />
Ich hatte einen Verweis</p>
<pre><code>T* pointer = varArr;
</code></pre>
<p>auf das Template-Array varArr, den ich allerdings zu früh gelöscht habe. Deshalb schlug das delete[] fehl, da das Objekt bereits nicht mehr existierte. Danke besonders an pumuckl für die Vorgehensweise. Die Reduzierung hat doch sehr geholfen.</p>
<p>Ach so, die Verwendung von std::vector&lt;T&gt; ist mir bekannt, allerdings benötige ich Arrays von bestimmten Datenstrukturen zur Zeitmessung. Leider schluckt die Vector-Klasse und deren Operationen schon einiges an CPU-Time, so dass die Messungen leider ungenau werden.</p>
<p>Vielen Dank nochmal für eure Hilfe.</p>
<p>Gruß,</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2057127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2057127</guid><dc:creator><![CDATA[Sir_Tobias]]></dc:creator><pubDate>Mon, 02 May 2011 12:16:34 GMT</pubDate></item></channel></rss>