<?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[Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters]]></title><description><![CDATA[<p>Hallo,</p>
<p>man kennt ja so Funktionen, die simple C-Strings entgegennehmen:</p>
<pre><code class="language-cpp">void hallo( const char* string );
</code></pre>
<p>Die kann man dann so aufrufen:</p>
<pre><code class="language-cpp">hallo(&quot;Welt&quot;);
</code></pre>
<p>Da wird also ein Array aus dem Boden gestampft, und ein Zeiger darauf an die<br />
Funktion übergeben. Wie lange bleibt dieser Zeiger aber gültig und wann verfällt er?<br />
Angenommen die Funktion wäre ein Konstruktor und ich fange an, den Zeiger rumzukopieren und<br />
weiterzureichen. Muß ich dan nicht irgendwann selber Platz dafür schaffen und das Array selbst kopieren?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187301/lebensdauer-eines-quot-const-char-quot-parameters</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 15:06:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187301.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jul 2007 09:45:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 09:45:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>man kennt ja so Funktionen, die simple C-Strings entgegennehmen:</p>
<pre><code class="language-cpp">void hallo( const char* string );
</code></pre>
<p>Die kann man dann so aufrufen:</p>
<pre><code class="language-cpp">hallo(&quot;Welt&quot;);
</code></pre>
<p>Da wird also ein Array aus dem Boden gestampft, und ein Zeiger darauf an die<br />
Funktion übergeben. Wie lange bleibt dieser Zeiger aber gültig und wann verfällt er?<br />
Angenommen die Funktion wäre ein Konstruktor und ich fange an, den Zeiger rumzukopieren und<br />
weiterzureichen. Muß ich dan nicht irgendwann selber Platz dafür schaffen und das Array selbst kopieren?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327641</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 18 Jul 2007 09:45:13 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 09:46:11 GMT]]></title><description><![CDATA[<p>Stringlitherale liegen im statischen Speicher und werden bei Programmende zerstört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327642</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 18 Jul 2007 09:46:11 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 09:51:25 GMT]]></title><description><![CDATA[<p>Allerdings solltest du dich nicht darauf verlassen, daß der Aufrufer wirklich nur String-Literale übergibt. Er könnte ja auch sowas machen:</p>
<pre><code class="language-cpp">void test()
{
  char ausgabe[]=&quot;Hallo Welt!&quot;;
  hallo(ausgabe);
}
</code></pre>
<p>In dem Fall wird der char-Zeiger ungültig, sobald die Funktion test() verlassen wird (und wie du siehst, passiert das sofort, nachdem hallo() zurückgekehrt ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327645</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 Jul 2007 09:51:25 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 09:57:55 GMT]]></title><description><![CDATA[<p>Danke! Genau das war mein Fehler! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Das war mir bei genauerer Betrachtung klar, daß das so nicht geht. (War aber einfach zu verführerisch...)<br />
Aber mir war nicht klar warum die Stringparameter in Anführungsstrichen nicht verfallen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327651</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 18 Jul 2007 09:57:55 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 11:20:50 GMT]]></title><description><![CDATA[<p>Gibt es 'ne brauchbare Methode, um hallo(ausgabe); trotzdem zu realisieren?</p>
<p>Evtl. den String mit new erzeugen? Aber wer macht dann das delete?<br />
Und was passiert, wenn ich ein Stringliteral mit delete lösche? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1327708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327708</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:20:50 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 11:22:23 GMT]]></title><description><![CDATA[<p>Was genau is denn dein Problem? Stringlitheral mit delete löschen ist keine gute Idee. Sollte irgendeine Art von undefiniertem Verhalten erzeugen! <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/1327712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327712</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 11:24:14 GMT]]></title><description><![CDATA[<p>Du könntest dir einen std::string nehmen und den nach Bedarf herumkopieren - ist sowieso eleganter (und sicherer) als mit nackten char-Zeigern zu werfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327714</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 11:28:54 GMT]]></title><description><![CDATA[<p>Naja, ich will einen lokalen String in eine Exception-Klasse reinpacken, die als Konstruktor einen &quot;const char*&quot;-Zeiger hat.<br />
Bisher habe ich sowas wie</p>
<pre><code class="language-cpp">throw ExcClass(&quot;Hossa!&quot;);
</code></pre>
<p>gemacht. Jetzt habe ich aber einen lokalen String, den ich da reinstecken will. Daher brauche ich auch sowas:</p>
<pre><code class="language-cpp">char ausgabe[]=&quot;Nu guck!&quot;;
  throw ExcClass(ausgabe);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1327717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327717</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:28:54 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 11:35:07 GMT]]></title><description><![CDATA[<p>Die einfachste Lösung: ersetze den 'const char*' durch einen 'const std::string' in der Exception-Klasse.</p>
<p>Wenn du <strong>unbedingt</strong> bei deinen char-Zeigern bleiben willst, muß der Ctor der Exception-Klasse eigenen Speicher anfordern und den String mit strcpy() dort reinpacken - und der zugehörige Dtor gibt den Speicher wieder frei. (dann mußt du aber auch den Copy-Ctor und operator= anpassen)</p>
<p>PS: Du weißt, daß Exceptions zur <strong>Ausnahme</strong>behandlung da sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327723</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 11:53:45 GMT]]></title><description><![CDATA[<p>Naja, das Design stammt nicht von mir und man wollte wohl bei Basistypen bleiben.<br />
Bei Ausnahmen bin ich sonst auch nicht so ein Geschwindigkeitsfanatiker.<br />
Ich kopiere ggf. lieber Objekte rum. Langsam werden mir die Vorzüge der Strings und Streams bewußt.<br />
Wieder was gelernt ... Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327739</guid><dc:creator><![CDATA[stimpleton]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 12:06:52 GMT]]></title><description><![CDATA[<p>stimpleton schrieb:</p>
<blockquote>
<p>Langsam werden mir die Vorzüge der Strings und Streams bewußt.</p>
</blockquote>
<p>Wieder ein User, den ich von den Vorzügen der C++ Standardbibliothek überzeugen konnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327743</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 Jul 2007 12:06:52 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 12:19:57 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Wieder ein User, den ich von den Vorzügen der C++ Standardbibliothek überzeugen konnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Die helle Seite der Macht ist stark in dir <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>Vielleicht ist es aber auch garnicht so schwer wenn man langsam dahinter kommt das es vielleicht gute Gründe gibt warum die STL im Standard enthalten ist.</p>
<p>cu André<br />
[Aus unbekannter Quelle:<br />
Joda: Dunkel die andere Seite, sie ist.<br />
Obi Wan: Sei still Joda und ess endlich deinen Toast.]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327757</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 18 Jul 2007 12:19:57 GMT</pubDate></item><item><title><![CDATA[Reply to Lebensdauer eines &amp;quot;const char*&amp;quot;-Parameters on Wed, 18 Jul 2007 12:32:36 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Aus unbekannter Quelle:</p>
</blockquote>
<p><a href="http://german-bash.org" rel="nofollow">german-bash.org</a>, später auch als Übersetzung im amerikanischen <a href="http://bash.org" rel="nofollow">bash.org</a>? <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>*scnr*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327767</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 18 Jul 2007 12:32:36 GMT</pubDate></item></channel></rss>