<?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[std::string]]></title><description><![CDATA[<p>Hallo!</p>
<pre><code>std::string str = &quot;hallo&quot;;
char * cstr = str.c_str();
</code></pre>
<p>Wann wird der speicherbereich auf den cstr dann verweist wieder freigestellt?</p>
<p>* wenn sich str ändert? (weil intern dann der alte string deleted wird)?<br />
* nie? ich muss selbst aufräumen?<br />
* bei zerstörung des str-objects?</p>
<p>hilfe!</p>
<p>gruß<br />
marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/125668/std-string</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 22:38:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/125668.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Nov 2005 15:11:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::string on Tue, 08 Nov 2005 15:11:27 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<pre><code>std::string str = &quot;hallo&quot;;
char * cstr = str.c_str();
</code></pre>
<p>Wann wird der speicherbereich auf den cstr dann verweist wieder freigestellt?</p>
<p>* wenn sich str ändert? (weil intern dann der alte string deleted wird)?<br />
* nie? ich muss selbst aufräumen?<br />
* bei zerstörung des str-objects?</p>
<p>hilfe!</p>
<p>gruß<br />
marcel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911858</guid><dc:creator><![CDATA[adsci]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:11:27 GMT</pubDate></item><item><title><![CDATA[Reply to std::string on Tue, 08 Nov 2005 15:21:43 GMT]]></title><description><![CDATA[<p>na dann überleg mal...</p>
<p>cstr ist was für ein Typ?<br />
c_str() gibt was zurück?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911867</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:21:43 GMT</pubDate></item><item><title><![CDATA[Reply to std::string on Tue, 08 Nov 2005 15:32:00 GMT]]></title><description><![CDATA[<p>Chris++ schrieb:</p>
<blockquote>
<p>na dann überleg mal...</p>
<p>cstr ist was für ein Typ?<br />
c_str() gibt was zurück?</p>
</blockquote>
<p>einen zeiger auf ein char.<br />
eine antwort/erklärung wäre mir lieber, als ein ratespiel.<br />
weil ohne überlegen hätte ich hier nicht gepostet.</p>
<p>meine frage ist, woher ich wissen soll was die string klasse da macht.<br />
sie gibt mir da nur eine speicheradresse zurück. woher soll ich wissen was mit dem speicher auf dieser speicheradresse passiert?</p>
<p>wie gesagt 3 möglichkeiten:</p>
<p>* der speicher wird irgendwann von string freigestellt, wenn sich str ändert.<br />
* string räumt das nie auf. ich muss das machen.<br />
* string räumt alle allokierten speicherbereiche in seinem destruktor auf</p>
<p>ich würde gerne wissen was zutrifft oder viell etwas ganz anderes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911876</guid><dc:creator><![CDATA[adsci]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to std::string on Tue, 08 Nov 2005 15:28:32 GMT]]></title><description><![CDATA[<p>MSDN schrieb:</p>
<blockquote>
<p>basic_string::c_str<br />
const E *c_str() const;</p>
<p>The member function returns a pointer to a nonmodifiable C string constructed by adding a terminating null element (E(0)) to the controlled sequence. Calling any non-const member function for *this can invalidate the pointer.</p>
</blockquote>
<p>kompiliert dein Quellcode?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911882</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:28:32 GMT</pubDate></item><item><title><![CDATA[Reply to std::string on Tue, 08 Nov 2005 15:30:50 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>MSDN schrieb:</p>
<blockquote>
<p>basic_string::c_str<br />
const E *c_str() const;</p>
<p>The member function returns a pointer to a nonmodifiable C string constructed by adding a terminating null element (E(0)) to the controlled sequence. Calling any non-const member function for *this can invalidate the pointer.</p>
</blockquote>
<p>kompiliert dein Quellcode?</p>
</blockquote>
<p>ja, so:</p>
<pre><code>std::string str = &quot;hallo&quot;;
const char * cstr = str.c_str();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/911887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911887</guid><dc:creator><![CDATA[adsci]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:30:50 GMT</pubDate></item><item><title><![CDATA[Reply to std::string on Tue, 08 Nov 2005 15:33:28 GMT]]></title><description><![CDATA[<p>Um das Freistellen des Speichers kümmert sich die string-Klasse. Deswegen wird auch const(!!!)-Zeiger zurück geliefert. Man bekommt sozusagen Leserechte auf den Inhalt des Strings als char*, aber die Verwaltung des Speichers bleibt trotzdem in der Klasse. Das ist auch gut so. <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>
<p>Wichtig ist zu beachten, dass der zurück gegebene Zeiger ungültig werden kann, wenn man an dem string eine Operation vornimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911890</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:33:28 GMT</pubDate></item><item><title><![CDATA[Reply to std::string on Tue, 08 Nov 2005 15:41:44 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>Um das Freistellen des Speichers kümmert sich die string-Klasse. Deswegen wird auch const(!!!)-Zeiger zurück geliefert. Man bekommt sozusagen Leserechte auf den Inhalt des Strings als char*, aber die Verwaltung des Speichers bleibt trotzdem in der Klasse. Das ist auch gut so. <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>
<p>Wichtig ist zu beachten, dass der zurück gegebene Zeiger ungültig werden kann, wenn man an dem string eine Operation vornimmt.</p>
</blockquote>
<p>super <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="🙂"
    /> danke! ok, das wäre also möglichkeit 1 <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 />
also ist der pointer auch ungültig, wenn das string object selbst stirbt. klar.<br />
danke!</p>
<p>aber eins noch:<br />
der zeiger ist doch garnicht const, oder?</p>
<pre><code>const char *s; // string ist const
char * const s; // zeiger ist const
</code></pre>
<p>oder irre ich mich da jetzt? ich darf den inhalt nicht verändern. den im endeffekt kopierten zeiger darf ich schon verändern (woanders hinzeigen lassen). das würde das string object ja auch nicht weiter tangieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/911897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911897</guid><dc:creator><![CDATA[adsci]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::string on Tue, 08 Nov 2005 15:43:59 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">string s = &quot;Hallo&quot;;

string *p = &amp;s;  //Variabler Zeiger, variables Objekt

const string *p2 = &amp;s;  //Variabler Zeiger, konstantes Objekt
//string const *p2 = &amp;s;  //ebenso: Variabler Zeiger, konstantes Objekt

string * const p3 = &amp;s; //Konstanter Zeiger, variables Objekt

const string * const p4 = &amp;s;  //Konstanter Zeiger, konstantes Objekt
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/911902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911902</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:43:59 GMT</pubDate></item><item><title><![CDATA[Reply to std::string on Tue, 08 Nov 2005 15:50:35 GMT]]></title><description><![CDATA[<p>adsci schrieb:</p>
<blockquote>
<p>ich darf den inhalt nicht verändern. den im endeffekt kopierten zeiger darf ich schon verändern (woanders hinzeigen lassen). das würde das string object ja auch nicht weiter tangieren.</p>
</blockquote>
<p>rischdisch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/911910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/911910</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 08 Nov 2005 15:50:35 GMT</pubDate></item></channel></rss>