<?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[Wie strdup freigeben?]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>wie gibt man eigentlich einen char* der mit strdup angefordert wurde wieder frei? free oder delete[]?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191464/wie-strdup-freigeben</link><generator>RSS for Node</generator><lastBuildDate>Sat, 26 Sep 2026 01:11:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191464.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Sep 2007 13:53:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie strdup freigeben? on Mon, 03 Sep 2007 13:53:30 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>wie gibt man eigentlich einen char* der mit strdup angefordert wurde wieder frei? free oder delete[]?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357947</guid><dc:creator><![CDATA[studi_x]]></dc:creator><pubDate>Mon, 03 Sep 2007 13:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wie strdup freigeben? on Mon, 03 Sep 2007 13:55:38 GMT]]></title><description><![CDATA[<p>wenn eins von den beiden dann free. strdup ist ne C-Funktion, und delete ist kein Bestandteil von C.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357951</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 03 Sep 2007 13:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wie strdup freigeben? on Mon, 03 Sep 2007 13:55:50 GMT]]></title><description><![CDATA[<p>Was soll das denn sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357952</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 03 Sep 2007 13:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to Wie strdup freigeben? on Mon, 03 Sep 2007 13:57:36 GMT]]></title><description><![CDATA[<p><a href="http://www.opengroup.org/onlinepubs/009695399/functions/strdup.html" rel="nofollow">http://www.opengroup.org/onlinepubs/009695399/functions/strdup.html</a> ...<br />
Wobei du einfach folgendes nehmen solltest:</p>
<pre><code class="language-cpp">std::string a(&quot;Das ist ja ein Toller string!&quot;);
std::cout &lt;&lt; a &lt;&lt; std::endl;
std::string b(a);
std::cout &lt;&lt; &quot;Dublikat: &quot; &lt;&lt; b &lt;&lt; std::endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1357954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357954</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 03 Sep 2007 13:57:36 GMT</pubDate></item><item><title><![CDATA[Reply to Wie strdup freigeben? on Mon, 03 Sep 2007 14:00:31 GMT]]></title><description><![CDATA[<p>Ich denke kaum einer kommt auf die Idee strdup zum duplizieren zu verwenden.<br />
Meistens geht es darum, dass &quot;komische&quot; C-APIs of oft ein char* anstatt ein const char* verlangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357958</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Mon, 03 Sep 2007 14:00:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wie strdup freigeben? on Mon, 03 Sep 2007 14:07:20 GMT]]></title><description><![CDATA[<p>Genau! Ich muß einer Api ein Passwort als char* übergeben. Da hätten sie auch in der Api noch ein const vorsetzen können...</p>
<p>Vielen Dank für die Hilfe <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/1357964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357964</guid><dc:creator><![CDATA[studi_x]]></dc:creator><pubDate>Mon, 03 Sep 2007 14:07:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wie strdup freigeben? on Mon, 03 Sep 2007 15:28:53 GMT]]></title><description><![CDATA[<p>Wenn strdup aus oben genannten Gründen unbedingt sein muss, so empfehle ich folgende Konstruktion:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;boost/shared_ptr.hpp&gt;

// ...
    std::string txt = &quot;das ist ein Text&quot;;
    boost::shared_ptr&lt; char &gt; txt2( strdup( txt.c_str() ), &amp;free );
    // Zugriff auf die String-Kopie mit 'txt2.get()'
</code></pre>
<p>So wird der allokierte Speicher sicher und ohne zusätzlichen Code am Ende des Scopes wieder freigegeben, selbst wenn eine Exception fliegt.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358068</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 03 Sep 2007 15:28:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wie strdup freigeben? on Mon, 03 Sep 2007 15:38:45 GMT]]></title><description><![CDATA[<p>Und hier eine Alternative, die ohne C <strong>und</strong> ohne Boost auskommt:</p>
<pre><code class="language-cpp">std::string txt = &quot;das ist ein Text&quot;;
std::vector&lt; char &gt; txt2( txt.begin(), txt.end() );
// Zugriff auf die String-Kopie mit '&amp;txt2[0]'
</code></pre>
<p>Dürfte auch nur wenig imperformanter sein, wenn man annimmt dass der vector-Ctor bei Random-Access-Iteratoren die Länge im Voraus berechnet.</p>
<p>EDIT:<br />
Hilfe, da fehlt ja das Nullbyte...</p>
<pre><code class="language-cpp">std::vector&lt; char &gt; txt2( txt.c_str(), txt.c_str() + txt.length() + 1 );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1358074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358074</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 03 Sep 2007 15:38:45 GMT</pubDate></item><item><title><![CDATA[Reply to Wie strdup freigeben? on Mon, 03 Sep 2007 15:40:13 GMT]]></title><description><![CDATA[<p>studi_x schrieb:</p>
<blockquote>
<p>Genau! Ich muß einer Api ein Passwort als char* übergeben. Da hätten sie auch in der Api noch ein const vorsetzen können...</p>
</blockquote>
<p>wenn du sicher bist, dass das API das passwort nicht verändert, dann caste das 'const' weg. das erspart dir die kopie.<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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358076</guid><dc:creator><![CDATA[Undertaker]]></dc:creator><pubDate>Mon, 03 Sep 2007 15:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wie strdup freigeben? on Tue, 04 Sep 2007 11:07:57 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>strdup ist ne C-Funktion</p>
</blockquote>
<p>Nicht mal das. strdup ist gar nichts, weder ISO C noch C++. Sollte man daher auch nicht verwenden. In C++ gibt es einfachere Möglichkeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1358649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358649</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 04 Sep 2007 11:07:57 GMT</pubDate></item></channel></rss>