<?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[konstanten Zeiger löschen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand erklaeren, warum ich folgenden konstanten Zeiger nicht löschen kann:</p>
<pre><code class="language-cpp">char const *buffer;
delete buffer; buffer = 0;
</code></pre>
<p>Ich arbeite mit visual studio 6 und bekomm immer folgende fehlermeldung:</p>
<p>error C2665: 'delete' : Durch keine der 2 Ueberladungen kann Parameter 1 vom Typ 'const char *' konvertiert werden</p>
<p>Desweiteren hab ich auch schon probiert dem Zeiger eine Adresse zuzuweisen; doch auch da bekomm ich dieselbe fehlermeldung!</p>
<p>Danke im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169782/konstanten-zeiger-löschen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 21:12:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169782.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 Jan 2007 20:00:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to konstanten Zeiger löschen on Mon, 08 Jan 2007 20:02:01 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand erklaeren, warum ich folgenden konstanten Zeiger nicht löschen kann:</p>
<pre><code class="language-cpp">char const *buffer;
delete buffer; buffer = 0;
</code></pre>
<p>Ich arbeite mit visual studio 6 und bekomm immer folgende fehlermeldung:</p>
<p>error C2665: 'delete' : Durch keine der 2 Ueberladungen kann Parameter 1 vom Typ 'const char *' konvertiert werden</p>
<p>Desweiteren hab ich auch schon probiert dem Zeiger eine Adresse zuzuweisen; doch auch da bekomm ich dieselbe fehlermeldung!</p>
<p>Danke im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1205991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1205991</guid><dc:creator><![CDATA[life_drake]]></dc:creator><pubDate>Mon, 08 Jan 2007 20:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Mon, 08 Jan 2007 20:19:58 GMT]]></title><description><![CDATA[<p>Tip: Der Zeiger ist nicht, wie du annimmst, konstant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206009</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Mon, 08 Jan 2007 20:19:58 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Mon, 08 Jan 2007 20:21:10 GMT]]></title><description><![CDATA[<p>Einem konstanten Zeiger solltest du bereits während der initalisierung<br />
den wert zuweisen den er haben soll.<br />
delete macht keinen Sinn da du ja nix mit new erzeugt hast.<br />
Und etwas konstantes auf 0 zu setzten wiederspricht ja dem konstant <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Falls du den buffer doch mit new erzeugen willst mach doch einfach das const weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206011</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Mon, 08 Jan 2007 20:21:10 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Mon, 08 Jan 2007 20:29:37 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1497">@Walli</a> Warum ist der Zeiger nicht konstant? Und warum lässt er sich nicht löschen?</p>
<p>@Storm.Xapek.de</p>
<p>life_drake schrieb:</p>
<blockquote>
<p>Desweiteren hab ich auch schon probiert dem Zeiger eine Adresse zuzuweisen; doch auch da bekomm ich dieselbe fehlermeldung!</p>
</blockquote>
<p>bitte:</p>
<pre><code class="language-cpp">char const *buffer = 0;
delete buffer; buffer = 0;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1206015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206015</guid><dc:creator><![CDATA[life_drake]]></dc:creator><pubDate>Mon, 08 Jan 2007 20:29:37 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Mon, 08 Jan 2007 20:40:01 GMT]]></title><description><![CDATA[<p>Der WErt des Zeigers ist konstant!<br />
Du kannst ihm also nach der initalisation<br />
nichts anderes mehr zuweisen, auch nicht 0!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206021</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Mon, 08 Jan 2007 20:40:01 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Mon, 08 Jan 2007 20:43:00 GMT]]></title><description><![CDATA[<p>Der Zeiger ist nicht konstant, nur die Elemente des Arrays. Und der Code ist eigentlich auch ok, evtl. liegts am MSVC6?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206024</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 08 Jan 2007 20:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Mon, 08 Jan 2007 20:46:48 GMT]]></title><description><![CDATA[<p>@Storm.Xapek.de<br />
Der Inhalt ist konstant und der Zeiger ist änderbar.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a><br />
Weisst du, ob es irgendwo im MSVC6 die Möglichkeit gibt, diese Fehlermeldung zu umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206026</guid><dc:creator><![CDATA[life_drake]]></dc:creator><pubDate>Mon, 08 Jan 2007 20:46:48 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Mon, 08 Jan 2007 20:47:45 GMT]]></title><description><![CDATA[<p>life_drake schrieb:</p>
<blockquote>
<p>Der Zeiger ist konstant; der Inhalt aber änderbar!!!</p>
</blockquote>
<p>Genau umgekehrt. Konstanter Zeiger wäre</p>
<pre><code class="language-cpp">int main()
{
    char* const test = new char[150];
    delete test;
    test =0;
}
</code></pre>
<p>Gibt einen Fehler in Zeile 5 weil der Zeiger konstant ist und die Zuweisung demnach illegal.</p>
<blockquote>
<p>Weisst du, ob es irgendwo im MSVC6 die Möglichkeit gibt, diese Fehlermeldung zu umgehen?</p>
</blockquote>
<p>Sorry,nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206028</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 08 Jan 2007 20:47:45 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Mon, 08 Jan 2007 20:56:35 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a><br />
Ja danke! Ich war kurzzeitig verwirrt und habs erst gemerkt, als ich den Beitrag schon abgeschickt hab!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206032</guid><dc:creator><![CDATA[life_drake]]></dc:creator><pubDate>Mon, 08 Jan 2007 20:56:35 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Tue, 09 Jan 2007 08:52:32 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nur mal zur Verdeutlichung, was das am Source bedeutet:</p>
<pre><code class="language-cpp">// Zeiger auf &quot;konstante&quot; Daten
char const * Das_worauf_ich_zeige_darf_nicht_veraendert_werden = new char;
*Das_worauf_ich_zeige_darf_nicht_veraendert_werden = 'a'; // Fehler !!
Das_worauf_ich_zeige_darf_nicht_veraendert_werden = 0;    // OK

// &quot;konstanter&quot; Zeiger auf Daten
char * const Wohin_ich_zeige_darf_nicht_veraendert_werden = new char;
*Wohin_ich_zeige_darf_nicht_veraendert_werden = 'a'; // OK
Wohin_ich_zeige_darf_nicht_veraendert_werden = 0; // Fehler !!

// &quot;konstanter&quot; Zeiger auf &quot;konstante&quot; Daten
char const * const Mit_mir_geht_gar_nix = new char;
Mit_mir_geht_gar_nix = 'a'; // Fehler !!
Mit_mir_geht_gar_nix = 0; // Fehler !!
</code></pre>
<p>&quot;Konstant&quot; ist in dem Zusammenhang mißverständlich - es heißt nur: &quot;Über diese Variable nicht veränderbar&quot; Folgendes funktioniert nämlich:</p>
<pre><code class="language-cpp">char * unconst_Zeiger = new char;
   *unconst_Zeiger = 'a';
   char const * const_Zeiger = unconst_Zeiger;

   *unconst_Zeiger = 'b';   
   cout &lt;&lt; &quot;const_Zeiger &quot; &lt;&lt; const_Zeiger &lt;&lt; &quot;\n&quot;;
// Huups: Nun hat sich auch der Speicher geändert, auf den const_Zeiger zeigt.
   delete unconst_Zeiger;
</code></pre>
<p>Es ist IMO übrigens hilfreich, sich zu merken: &quot;const wirkt nach hinten&quot;.</p>
<p>(einzige Ausnahme: Wenn const als erster Kennzeichner verwendet wird, wirkt es auf den nächsten: &quot;const char *&quot; == &quot;char const *&quot;; Leider in den meistens Sources mengenmäßig die Regel und nicht die Ausnahme)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206165</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Tue, 09 Jan 2007 08:51:17 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char const * Das_worauf_ich_zeige_darf_nicht_veraendert_werden = new char;

delete Das_worauf_ich_zeige_darf_nicht_veraendert_werden; // Fehler !!
</code></pre>
</blockquote>
<p>Der Rest war ja bereits geklärt, aber dieser Aussage kann ich noch nicht zustimmen. Konstantheit hat IMHO nichts mit Allokation zu tun, sondern in diesem Fall lediglich mit dem Schutz des Allokierten. Deshalb behaupte ich dass z.B. folgendes vollkommen legal ist.</p>
<pre><code class="language-cpp">Point const* ursprung = new Point(0, 0);

// ursprung-&gt;setX(1); das wollen wir verhindern

delete ursprung; // wie sonst sollte ich ein Speicherleck vermeiden?
</code></pre>
<p>EDIT:</p>
<p>ISO/IEC 14882:1998 schrieb:</p>
<blockquote>
<p>5.3.5 Absatz 2<br />
[Note: a pointer to a const type can be the operand of a delete-expression; it is not necessary to cast away the constness (expr.const.cast) of the pointer expression before it is used as the operand of the delete-expression. ]</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1206172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206172</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:51:17 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Tue, 09 Jan 2007 08:50:35 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char const * Das_worauf_ich_zeige_darf_nicht_veraendert_werden = new char;

delete Das_worauf_ich_zeige_darf_nicht_veraendert_werden; // Fehler !!
</code></pre>
</blockquote>
<p>Der Rest war ja bereits geklärt, aber dieser Aussage kann ich noch nicht zustimmen. Konstantheit hat IMHO nichts mit Allokation zu tun, sondern in diesem Fall lediglich mit dem Schutz des Allokierten. Deshalb behaupte ich dass z.B. folgendes vollkommen legal ist.</p>
<pre><code class="language-cpp">Point const* ursprung = new Point(0, 0);

// ursprung-&gt;setX(1); das wollen wir verhindern

delete ursprung; // wie sonst sollte ich ein Speicherleck vermeiden?
</code></pre>
</blockquote>
<p>Du hast Recht und ich Unrecht (sagt jedenfalls mein Compiler) !!!<br />
- Hatte ich irgendwie anders im Kopf - werde das korrigieren.</p>
<p>Dass ich das Ganze nochmal in Source gegossen habe, sollte vA der Veranschaulichung dienen (&quot;1 Zeile Source sagt mehr als 1000 Worte&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ).</p>
<p>Danke für die Klarstellung,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206184</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:50:35 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Tue, 09 Jan 2007 08:51:57 GMT]]></title><description><![CDATA[<p>Sicher war ich ja selbst nicht, bis ich es im Standard fand (s.o.) - deshalb ja auch &quot;behaupte ich&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206186</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 09 Jan 2007 08:51:57 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Tue, 09 Jan 2007 09:54:08 GMT]]></title><description><![CDATA[<p>Hallo nochmal!</p>
<p>Um auf mein Problem zurückzukommen:<br />
Kann mir jemand erklären, warum mein Compiler (MSVC6) folgende Fehlermeldung bringt:</p>
<p>life_drake schrieb:</p>
<blockquote>
<p>error C2665: 'delete' : Durch keine der 2 Ueberladungen kann Parameter 1 vom Typ 'const char *' konvertiert werden</p>
</blockquote>
<p>Bzw. wie kann ich das umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206224</guid><dc:creator><![CDATA[life_drake]]></dc:creator><pubDate>Tue, 09 Jan 2007 09:54:08 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Tue, 09 Jan 2007 09:56:48 GMT]]></title><description><![CDATA[<p>Nunja, warum er diesen Fehler bringt musst Du schon Microsoft fragen. Die offensichtlichste Antwort dürfte sein &quot;weil sich MSVC6 in diesem Punkt nicht an ISO/IEC 14882:1998 hält&quot;.</p>
<p>Umgehen kannst Du es höchstens indem Du updatest (:D) oder die constness wegcastest (was laut Standard nicht notwendig ist):</p>
<pre><code class="language-cpp">delete const_cast&lt;char*&gt;(pointer); // oder, falls der MSVC6 selbst das nicht rafft
delete (char*)pointer;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1206225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206225</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 09 Jan 2007 09:56:48 GMT</pubDate></item><item><title><![CDATA[Reply to konstanten Zeiger löschen on Tue, 09 Jan 2007 10:06:22 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a><br />
Wow! ... Bin hellauf begeistert ... es hat funktioniert! THX!</p>
<p>Kann ich analog dazu ein Feld wie folgt löschen?</p>
<pre><code class="language-cpp">delete [](char*)buffer;
</code></pre>
<p>P.S. Ich kann nicht updaten, weil das mein Rechner dann nicht schafft! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206232</guid><dc:creator><![CDATA[life_drake]]></dc:creator><pubDate>Tue, 09 Jan 2007 10:06:22 GMT</pubDate></item></channel></rss>