<?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[(char* benutzen == mem leak) == wahr_oder_falsch]]></title><description><![CDATA[<p>Guten Abend.</p>
<p>Ich benötige Aufklärung! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<pre><code class="language-cpp">class charSpeicher
{
     char* text;

public:
     charSpeicher() : text(0) {}

     const char* getChar() { return text; } //FEHLER VERMUTET
     void        setChar(const char* c) 
     {
            if( text ) delete text;
            strcpy(text, c);
     }
}

void irgendwo()
{
    charSpeicher cs;

    std::string irgendwas(&quot;Blablabla&quot;);
    const char* c = &quot;BLABLABLA!&quot;;

    cs.setChar(irgendwas.c_str());
    cs.setChar(c);
}
</code></pre>
<p>Ist da irgendwo ein Speicherleck oder sowas in der Art?? Ich arbeite bis jetzt immer nur mit std::string und möchte mich endlich mal mit chars &quot;auskennen&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>Zwar kein Konkretes Problem aber ihr findet mögliche Fehler sicher schnell <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Dankesehr</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240810/char-benutzen-mem-leak-wahr_oder_falsch</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 19:46:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240810.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 May 2009 21:56:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 21:56:42 GMT]]></title><description><![CDATA[<p>Guten Abend.</p>
<p>Ich benötige Aufklärung! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<pre><code class="language-cpp">class charSpeicher
{
     char* text;

public:
     charSpeicher() : text(0) {}

     const char* getChar() { return text; } //FEHLER VERMUTET
     void        setChar(const char* c) 
     {
            if( text ) delete text;
            strcpy(text, c);
     }
}

void irgendwo()
{
    charSpeicher cs;

    std::string irgendwas(&quot;Blablabla&quot;);
    const char* c = &quot;BLABLABLA!&quot;;

    cs.setChar(irgendwas.c_str());
    cs.setChar(c);
}
</code></pre>
<p>Ist da irgendwo ein Speicherleck oder sowas in der Art?? Ich arbeite bis jetzt immer nur mit std::string und möchte mich endlich mal mit chars &quot;auskennen&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>Zwar kein Konkretes Problem aber ihr findet mögliche Fehler sicher schnell <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Dankesehr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709223</guid><dc:creator><![CDATA[rubber]]></dc:creator><pubDate>Mon, 11 May 2009 21:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:01:51 GMT]]></title><description><![CDATA[<p>Oder sollte man auch std::string immer und überall verwenden? <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/1709227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709227</guid><dc:creator><![CDATA[rubber]]></dc:creator><pubDate>Mon, 11 May 2009 22:01:51 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:05:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void        setChar(const char* c) 
     {
            if( text ) delete[] text;//die [] neu
            text = new char[strlen(c)+1];//neu
            strcpy(text, c);
     }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1709228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709228</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 May 2009 22:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:03:41 GMT]]></title><description><![CDATA[<p>rubber schrieb:</p>
<blockquote>
<p>Oder sollte man auch std::string immer und überall verwenden? <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>
</blockquote>
<p>nicht immer und überall. aber hier sicherlich und meistens sonst auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709229</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 May 2009 22:03:41 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:06:44 GMT]]></title><description><![CDATA[<p>rubber schrieb:</p>
<blockquote>
<p>Ist da irgendwo ein Speicherleck oder sowas in der Art?? Ich arbeite bis jetzt immer nur mit std::string und möchte mich endlich mal mit chars &quot;auskennen&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>
</blockquote>
<p>Normalerweise sollte man mit C anfangen und daher erst die <code>char</code> 's kennenlernen. <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>rubber schrieb:</p>
<blockquote>
<p>Zwar kein Konkretes Problem aber ihr findet mögliche Fehler sicher schnell <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
</blockquote>
<p>Bei <code>setChar</code> <em>kopierst</em> du den übergebenen Speicher <em>in</em> die Member-Variable text, für die du aber noch keinen Speicher angefordert hast. Was du vermutlich eher vorhattest: <em>Setz</em> die Variable <em>selbst</em> auf den übergebenen Parameter. Damit brauchst du auch nicht kopieren, die Variable zeigt einfach auf den Speicher, der bei <code>setChar</code> übergeben wurde. Dann brauchst du auch nicht <code>delete</code> aufrufen, der Speicher wird automatisch freigegeben, wenn die Variable aus dem Scope verschwindet (in diesem Fall beim Verlassen der <code>main</code> -Funktion). Aber Achtung: dann kannst Du sie auch nicht mehr in deiner Klasser verwenden.</p>
<p>Kleiner Hinweis: mehrere <code>char</code> 's werden im allgemeinen (auch in C) als Strings bezeichnet. <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/1709230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709230</guid><dc:creator><![CDATA[devkid]]></dc:creator><pubDate>Mon, 11 May 2009 22:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:07:59 GMT]]></title><description><![CDATA[<p>Hehe ok, danke. Habs verstanden soweit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
(Nein, ich habe nie C programmiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> )</p>
<p>Ich habe gehört dass std::string <strong>deutlich</strong> langsamer ist und man immerzu versuchen sollte std::string zu nutzen... wohl nicht wahr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709232</guid><dc:creator><![CDATA[rubber]]></dc:creator><pubDate>Mon, 11 May 2009 22:07:59 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:09:19 GMT]]></title><description><![CDATA[<p>rubber schrieb:</p>
<blockquote>
<p>Hehe ok, danke. Habs verstanden soweit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
(Nein, ich habe nie C programmiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> )</p>
<p>Ich habe gehört dass std::string <strong>deutlich</strong> langsamer ist und man immerzu versuchen sollte std::string zu nutzen... wohl nicht wahr?</p>
</blockquote>
<p>Ich meine natürlich &quot;(...) versuchen sollte char* zu nutzen (...)&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709234</guid><dc:creator><![CDATA[rubber]]></dc:creator><pubDate>Mon, 11 May 2009 22:09:19 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:12:52 GMT]]></title><description><![CDATA[<p>Natürlich ist es langsamer, aber das spielt bei heutigen Prozessoren nahezu keine eine Rolle mehr. Im Gegenzug zur &quot;Performance-Einbuße&quot; kannst du den String allerdings bequem verwalten und beliebig &quot;verlängern&quot; (und noch viele andere schöne Dinge damit tun).<br />
In C++ solltest du char* nur noch einsetzen, wenn es performance-mäßig wirklich kritisch wird oder du manuelle Speicherverwaltung brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709236</guid><dc:creator><![CDATA[devkid]]></dc:creator><pubDate>Mon, 11 May 2009 22:12:52 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:13:51 GMT]]></title><description><![CDATA[<p>rubber schrieb:</p>
<blockquote>
<p>Ich habe gehört dass std::string <strong>deutlich</strong> langsamer ist und man immerzu versuchen sollte char* zu nutzen... wohl nicht wahr?</p>
</blockquote>
<p>Nein, das ist nicht wahr. <code>std::string</code> ist für viele Fälle sehr gut geeignet, weil er die Speicherverwaltung übernimmt. Allerdings benötigst du vielleicht nicht immer autonome Container. Zum Beispiel, wenn du nur ein Zeichenkettenliteral als <code>const char*</code> durchreichst. Aber sobald du manuell mit <code>new[]</code> und <code>delete[]</code> beginnst zu arbeiten und dein Anwendungs-Code zu Low-Level-Gefrickel verkommt, wäre <code>std::string</code> (oder je nachdem ein anderer, z.B. eigener String-Container) die bessere Wahl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709238</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 11 May 2009 22:13:51 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:14:13 GMT]]></title><description><![CDATA[<p>devkid schrieb:</p>
<blockquote>
<p>Natürlich ist es langsamer, aber das spielt bei heutigen Prozessoren nahezu keine eine Rolle mehr. Im Gegenzug zur &quot;Performance-Einbuße&quot; kannst du den String allerdings bequem verwalten und beliebig &quot;verlängern&quot; (und noch viele andere schöne Dinge damit tun).<br />
In C++ solltest du char* nur noch einsetzen, wenn es performance-mäßig wirklich kritisch wird oder du manuelle Speicherverwaltung brauchst.</p>
</blockquote>
<p>Damit sind wohl all meine char Fragen befriedigt.<br />
Ich danke euch! <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/1709239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709239</guid><dc:creator><![CDATA[rubber]]></dc:creator><pubDate>Mon, 11 May 2009 22:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:15:05 GMT]]></title><description><![CDATA[<p>rubber schrieb:</p>
<blockquote>
<p>Ich habe gehört dass std::string <strong>deutlich</strong> langsamer ist und man immerzu versuchen sollte char* zu nutzen... wohl nicht wahr?</p>
</blockquote>
<p>das ist nicht wahr.<br />
was du da gemacht hast, war eine klasse um char* zu schreiben, und nix anderes ist std::string ja auch.<br />
allerdings haben die macher von std::string schon etliche ausgefuchste tricks auf lager, an die ein anfänger in den erstan paar jahren nicht heranreicht.</p>
<p>allerdinsg eine sache gibts:<br />
wenn man einen char* hat und einen char* braucht, ist es unfug, zwischendurch einen std::string zu bauen.<br />
siehe</p>
<pre><code class="language-cpp">void deleteFile(string filename)
{
   RemoveFileOderWasVomBetriebssystem(filename.c_str());
}
...
int main(){
   deleteFile(&quot;c:\\autoexec.bat&quot;);
}
</code></pre>
<p>hier ist es einfach krank, den dateinamen erstmal in einen string zu wandeln, um dann den char* wieder rauszuziehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709240</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 May 2009 22:15:05 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:15:50 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>: Hihi, sag sowas nie in der Nähe von einem C-ler *gg*</p>
<p>Gut zu wissen wie es geht. Dann bleibe ich wohl beim std::string <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/1709241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709241</guid><dc:creator><![CDATA[rubber]]></dc:creator><pubDate>Mon, 11 May 2009 22:15:50 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:16:16 GMT]]></title><description><![CDATA[<p>devkid schrieb:</p>
<blockquote>
<p>Natürlich ist es langsamer, aber das spielt bei heutigen Prozessoren nahezu keine eine Rolle mehr.</p>
</blockquote>
<p>50 prozent sind 50 prozent. der schnellere prozessor ändert daran nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709242</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 May 2009 22:16:16 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:23:00 GMT]]></title><description><![CDATA[<p>rubber schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>: Hihi, sag sowas nie in der Nähe von einem C-ler *gg*</p>
</blockquote>
<p>In C ist das eben die einzige Möglichkeit und entsprechend muss man schauen, dass man damit zurecht kommt. Wenn man jedoch schon C++ programmiert, sollte man auch die Vorzüge von Objektorientierung, RAII und generischer Programmierung nutzen. <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>volkard schrieb:</p>
<blockquote>
<p>50 prozent sind 50 prozent. der schnellere prozessor ändert daran nichts.</p>
</blockquote>
<p>Was für 50%?</p>
<p>Falls <code>std::string</code> wegen gewisser Aspekte immer noch viel langsamer als rohe <code>char</code> -Arrays sein sollte, ist es mit einer eigenen Klasse meist möglich, nahezu an die Originalgeschwindigkeit heranzukommen. Zumal Dinge wie <code>malloc()</code> von C in C++ nicht langsamer sind, wenn sie in einer Klassen-Memberfunktion stehen. Ein wenig Optimierungen gehören natürlich auch dazu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709245</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 11 May 2009 22:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Mon, 11 May 2009 22:29:43 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>50 prozent sind 50 prozent. der schnellere prozessor ändert daran nichts.</p>
</blockquote>
<p>Was für 50%?</p>
</blockquote>
<p>das war die antwort auf</p>
<blockquote>
<p>Natürlich ist es langsamer, aber das spielt bei heutigen Prozessoren nahezu keine eine Rolle mehr.</p>
</blockquote>
<p>wenn etwas auf einem alten prozessor halb so schnell war, ist es auf dem neuen auch halb so schnell.<br />
diese argument mit dem neuen prozessor war schrott. deswegen hab ich widersprochen. das hat nix damit zu tun, ob std::string schneller oder langsamer als rohe char* ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709247</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 May 2009 22:29:43 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Tue, 12 May 2009 06:22:15 GMT]]></title><description><![CDATA[<blockquote>
<p>Normalerweise sollte man mit C anfangen und daher erst die char's kennenlernen.</p>
</blockquote>
<p>Das ist absoluter quatsch.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709290</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 12 May 2009 06:22:15 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Tue, 12 May 2009 06:26:17 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>diese argument mit dem neuen prozessor war schrott. deswegen hab ich widersprochen. das hat nix damit zu tun, ob std::string schneller oder langsamer als rohe char* ist.</p>
</blockquote>
<p>naja, aber wenn damals (wann auch immer das war), das kopieren eines C-Strings meinetwegen 100ms und eines C++-Strings dementsprechend 150ms gedauert hat und es heute nur noch 10 respektive 15ms dauert kann man wohl durchaus behaupten, dass es heute kaum noch einen Unterschied macht (5ms sind vll noch vernachlässigbar, was bei 50ms schonmal eng werden kann)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709291</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Tue, 12 May 2009 06:26:17 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Tue, 12 May 2009 08:28:52 GMT]]></title><description><![CDATA[<p>devkid schrieb:</p>
<blockquote>
<p>...Normalerweise sollte man mit C anfangen und daher erst die <code>char</code> 's kennenlernen. ...mehrere <code>char</code> 's werden im allgemeinen (auch in C) als Strings bezeichnet. <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>
</blockquote>
<p>devkid schrieb:</p>
<blockquote>
<p>Natürlich ist es langsamer, ...<br />
In C++ solltest du char* nur noch einsetzen, wenn es performance-mäßig wirklich kritisch wird oder du manuelle Speicherverwaltung brauchst.</p>
</blockquote>
<p>Sorry, aber da ist soviel Zeug dabei, das ich falsch finde, dass ich da mal widersprechen muss:<br />
- Der Weg &quot;von C zu C++&quot; und &quot;von char* zu std::string&quot; ist schon lange weder Standard noch hilfreich. Man kann problemlos (einige meinen sogar &quot;besser&quot;) direkt mit C++ und std::string einsteigen.<br />
- Gerade im C++-Forum ist es sehr hilfreich, die Terminologie zu trennen ...<br />
- Natürlich sind std::string <em>nicht</em> &quot;natürlich langsamer&quot;. Werden dieselben Aufgaben erledigt, sind beide auch gleich &quot;schnell&quot;. Das Problem ist, dass oftmals ein einzelner strcpy()-Call mit einem std::string::append() verglichen wird ... letzterer macht aber einfach viel mehr.<br />
- Für den Vorzug von char* ggü. std::string spielen sehr viel mehr (und üblicherweise wichtigere) Kriterien die ausschlaggebende Rolle. Vorgegebene APIs, exception-safety, ...</p>
<p>Alles keine wirklichen &quot;Neckbreaker&quot;, aber in der Summe doch so viel, dass ich einfach mal gegenhalten musste. <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709315</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 12 May 2009 08:28:52 GMT</pubDate></item><item><title><![CDATA[Reply to (char* benutzen == mem leak) == wahr_oder_falsch on Tue, 12 May 2009 08:34:55 GMT]]></title><description><![CDATA[<p>zwutz schrieb:</p>
<blockquote>
<p>naja, aber wenn damals (wann auch immer das war), das kopieren eines C-Strings meinetwegen 100ms und eines C++-Strings dementsprechend 150ms gedauert hat und es heute nur noch 10 respektive 15ms dauert kann man wohl durchaus behaupten, dass es heute kaum noch einen Unterschied macht (5ms sind vll noch vernachlässigbar, was bei 50ms schonmal eng werden kann)</p>
</blockquote>
<p>Nicht, wenn man heute 10mal soviele Strings kopiert wie &quot;damals&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709316</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 12 May 2009 08:34:55 GMT</pubDate></item></channel></rss>