<?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[löschen einer Localen Variable.]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Variable local initialisiert.</p>
<p>char* Dir=&quot;C:\&quot;;</p>
<p>danach strcat(Dir,BA.c_str()); den Inhalt so erweitert.<br />
Am Ende so</p>
<p>delete Dir;<br />
Speicher Freigegeben.wenn ich mein unterprogramm nochmal aufrufe, wird Dir nicht mit &quot;C:\&quot; initialisiert, sondern &quot;c:\&quot; + alte Inhat von &quot;BA&quot;.</p>
<p>wie kann ich diese Fehler beseitigen?</p>
<p>gibt es unterschied zwichen: char* Dir; und char *Dir; ?</p>
<p>Gruß<br />
S.Mathi<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/94025/löschen-einer-localen-variable</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 14:30:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/94025.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Dec 2004 15:30:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to löschen einer Localen Variable. on Sun, 05 Dec 2004 15:30:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Variable local initialisiert.</p>
<p>char* Dir=&quot;C:\&quot;;</p>
<p>danach strcat(Dir,BA.c_str()); den Inhalt so erweitert.<br />
Am Ende so</p>
<p>delete Dir;<br />
Speicher Freigegeben.wenn ich mein unterprogramm nochmal aufrufe, wird Dir nicht mit &quot;C:\&quot; initialisiert, sondern &quot;c:\&quot; + alte Inhat von &quot;BA&quot;.</p>
<p>wie kann ich diese Fehler beseitigen?</p>
<p>gibt es unterschied zwichen: char* Dir; und char *Dir; ?</p>
<p>Gruß<br />
S.Mathi<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/666369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/666369</guid><dc:creator><![CDATA[smathi]]></dc:creator><pubDate>Sun, 05 Dec 2004 15:30:35 GMT</pubDate></item><item><title><![CDATA[Reply to löschen einer Localen Variable. on Sun, 05 Dec 2004 17:40:49 GMT]]></title><description><![CDATA[<p>Autsch, böse Falle.</p>
<p>char* Dir ist ein Zeiger auf einen Speicherbereich und in deinem Falle auf den Speicherbereich <strong>deines Programmes</strong> wo 'c:\' drin steht. Durch strcat(Dir,BA.c_str()); überschreibst du dir jetzt einen Teil des Speichers. Welcher Teil dies ist und was das für Auswirkungen hat, kann keiner Vorhersagen. Fakt ist, das dies die beste Methode ist um die irrwitzigsten Fehler zu erzeugen. Angefangen von undefinierten Verhalten bis hin zu Programmabstürzen; meistens an Stellen die rein gar nix mit der Programmzeile zu tun haben.</p>
<p>Warum beim zweiten Durchlauf Dir nicht mit 'c:\' sondern mit &quot;c:\&quot; + alte Inhat von &quot;BA&quot; <em>initialisiert</em> wird ist einfach zu erklären. Erstens wir char* Dir nicht mit der Zeichenkette initialisiert sondern mit der Adresse, an der die Zeichenkette steht und zweitens hast du wie gesagt beim ersten Durchlauf dein Programmcode modifiziert. Dir zeigt auf den richtigen Speicherbereich nur steht da jetzt was anderes drin als vorher.</p>
<p>Der zweite Fehler ist, das du versuchst den Speicher auch noch zu löschen (delete *Dir;). Deleted werden nur Sachen, die vorher auch mit new erzeugt wurden und nicht prinzipiell alles, was nach Zeigern aussieht.</p>
<p>Eine (nicht optimale) Lösung wäre:</p>
<pre><code>char *dir = new char[strlen(BA.c_str())+4]; // Platz für 'c:\\' (drei Stellen), BA und das abschließende Null-Byte

sprintf(dir,&quot;c:\\%s&quot;,BA.c_str());
bzw.
strcpy(dir,&quot;c:\\&quot;);
strcat(dir,BA.c_str());
...
delete dir;
</code></pre>
<p>Da wir aber im BCB-Forum sind, C-Style in C++ nicht gern gesehen wird und BA anscheinend ein AnsiString ist, würde ich doch folgende Variante vorschlagen:</p>
<pre><code>AnsiString Dir = AnsiString(&quot;c:\\&quot;) + BA;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/666482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/666482</guid><dc:creator><![CDATA[Killing me softly]]></dc:creator><pubDate>Sun, 05 Dec 2004 17:40:49 GMT</pubDate></item><item><title><![CDATA[Reply to löschen einer Localen Variable. on Sun, 05 Dec 2004 20:12:16 GMT]]></title><description><![CDATA[<p>Vielen Danke für Ihrer ausführlichen Erklärung.Ich habe noch kleine Frage:</p>
<p>Wofür ist %S da? <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/666636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/666636</guid><dc:creator><![CDATA[smathi]]></dc:creator><pubDate>Sun, 05 Dec 2004 20:12:16 GMT</pubDate></item><item><title><![CDATA[Reply to löschen einer Localen Variable. on Sun, 05 Dec 2004 20:15:35 GMT]]></title><description><![CDATA[<p>s für string ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/666641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/666641</guid><dc:creator><![CDATA[push_]]></dc:creator><pubDate>Sun, 05 Dec 2004 20:15:35 GMT</pubDate></item><item><title><![CDATA[Reply to löschen einer Localen Variable. on Sun, 05 Dec 2004 20:19:18 GMT]]></title><description><![CDATA[<p>push_ schrieb:</p>
<blockquote>
<p>s für string ?</p>
</blockquote>
<p>Super! Sie haben meine 2 Probleme mit einer Änderung gelöst.</p>
<p>Vielen Danke.<br />
<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="🙂"
    /><br />
Grüß<br />
S.Mathi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/666644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/666644</guid><dc:creator><![CDATA[smathi]]></dc:creator><pubDate>Sun, 05 Dec 2004 20:19:18 GMT</pubDate></item></channel></rss>