<?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[fragen zu strcpy() und strcat()]]></title><description><![CDATA[<p>habe ich bei strcpy() und strcat() eventuelle speicherleaks zu befürchten bzw muss ich mich um die genug großen speicherbereiche selber kümmern oder machen die funktionen das von selbst?<br />
wenn ja wie kann ich das sauber machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168708/fragen-zu-strcpy-und-strcat</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 12:53:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168708.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Dec 2006 22:18:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Tue, 26 Dec 2006 22:18:57 GMT]]></title><description><![CDATA[<p>habe ich bei strcpy() und strcat() eventuelle speicherleaks zu befürchten bzw muss ich mich um die genug großen speicherbereiche selber kümmern oder machen die funktionen das von selbst?<br />
wenn ja wie kann ich das sauber machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198247</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 26 Dec 2006 22:18:57 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Tue, 26 Dec 2006 22:24:29 GMT]]></title><description><![CDATA[<p>Aus &quot;C++ reference&quot; (Erster Hit in Google)</p>
<blockquote>
<p>char * strcpy ( char * dest, const char * src );</p>
<p>Copy string.<br />
Copies the content pointed by src to dest stopping after the terminating null-character is copied.<br />
dest should have enough memory space allocated to contain src string.</p>
<p>Parameters.</p>
<p>dest<br />
Destination string. Should be enough long to contain string2.<br />
string2<br />
Null-terminated string to copy.</p>
<p>char * strcat ( char * dest, const char * src );</p>
<p>Append string.<br />
Appends src string to dest string. The terminating null character in dest is overwritten by the first character of src. The resulting string includes a null-character at end.</p>
<p>Parameters.</p>
<p>dest<br />
Pointer to a null-terminated string with enough space allocated to contain both src and dest.<br />
src<br />
Null-terminated string to append.</p>
</blockquote>
<p><a href="http://www.cplusplus.com/ref/cstring/" rel="nofollow">http://www.cplusplus.com/ref/cstring/</a></p>
<blockquote>
<p>size_t strlen ( const char * string );</p>
<p>Return string length.<br />
Returns the number of characters in string before the terminating null-character.</p>
<p>Parameters.</p>
<p>string<br />
Null-terminated string.</p>
<p>Return Value.<br />
The length of string.</p>
</blockquote>
<p>Aber wenn du wirklich C++ machst, vergiss C-Strings:</p>
<blockquote>
<p>Defined in ANSI-C</p>
</blockquote>
<p>Nimm lieber std::string und konsorten <a href="http://www.cppreference.com/cppstring/index.html" rel="nofollow">http://www.cppreference.com/cppstring/index.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198250</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Tue, 26 Dec 2006 22:24:29 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Tue, 26 Dec 2006 22:22:58 GMT]]></title><description><![CDATA[<p>gut und wie kann ich das &quot;sauber&quot; machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198251</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 26 Dec 2006 22:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Tue, 26 Dec 2006 22:24:48 GMT]]></title><description><![CDATA[<p>Siehe mein Edit oben: strlen()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198252</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Tue, 26 Dec 2006 22:24:48 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Tue, 26 Dec 2006 22:31:04 GMT]]></title><description><![CDATA[<p>neomic schrieb:</p>
<blockquote>
<p>gut und wie kann ich das &quot;sauber&quot; machen?</p>
</blockquote>
<p>nimm strncpy und strncat (mit 'nem N in der mitte). damit kannste buffer overflows vermeiden, weil du die länge des buffers angeben kannst...<br />
:xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198254</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Tue, 26 Dec 2006 22:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Tue, 26 Dec 2006 22:32:10 GMT]]></title><description><![CDATA[<p>ten schrieb:</p>
<blockquote>
<p>neomic schrieb:</p>
<blockquote>
<p>gut und wie kann ich das &quot;sauber&quot; machen?</p>
</blockquote>
<p>nimm strncpy und strncat (mit 'nem N in der mitte). damit kannste buffer overflows vermeiden, weil du die länge des buffers angeben kannst...<br />
:xmas2:</p>
</blockquote>
<p>heist dann da wird der rest dann einfach abgeschnitten oder reserviert der dann den neuen speicher?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198256</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 26 Dec 2006 22:32:10 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Tue, 26 Dec 2006 22:40:39 GMT]]></title><description><![CDATA[<p>neomic schrieb:</p>
<blockquote>
<p>heist dann da wird der rest dann einfach abgeschnitten oder reserviert der dann den neuen speicher?</p>
</blockquote>
<p>wird abgeschnitten wenn's nicht passt. es wird nicht willkürlich speicher alloziert, hast also volle kontrolle drüber <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1198260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198260</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Tue, 26 Dec 2006 22:40:39 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 09:07:46 GMT]]></title><description><![CDATA[<p>Alternativ kannst du auch std::string verwenden - der kümmert sich selber darum, wieviel Speicher er benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198312</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 27 Dec 2006 09:07:46 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 11:10:00 GMT]]></title><description><![CDATA[<p>ten schrieb:</p>
<blockquote>
<p>neomic schrieb:</p>
<blockquote>
<p>gut und wie kann ich das &quot;sauber&quot; machen?</p>
</blockquote>
<p>nimm strncpy und strncat (mit 'nem N in der mitte). damit kannste buffer overflows vermeiden, weil du die länge des buffers angeben kannst...<br />
:xmas2:</p>
</blockquote>
<p>Was spricht gegen 'std::copy'?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198349</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 27 Dec 2006 11:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 12:29:30 GMT]]></title><description><![CDATA[<p>neomic schrieb:</p>
<blockquote>
<p>habe ich bei strcpy() und strcat() eventuelle speicherleaks zu befürchten bzw muss ich mich um die genug großen speicherbereiche selber kümmern oder machen die funktionen das von selbst?</p>
</blockquote>
<p>Bei strcpy() und strcat() musst Du Dich selbst um den benötigten Arbeitsspeicher kümmern. Genauso bei strncpy() und strncat()!</p>
<p>neomic schrieb:</p>
<blockquote>
<p>wenn ja wie kann ich das sauber machen?</p>
</blockquote>
<p>In Standard-C++ nur mit std::string (bzw. std::wstring). Etwa so:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
// ...
    std::string quelle = &quot;Hello &quot;;
    std::string ziel;
    // ..
    ziel = quelle; // statt strcpy()
    ziel += &quot;World&quot;; // statt strcat();
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198397</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 27 Dec 2006 12:29:30 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 12:40:07 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>neomic schrieb:</p>
<blockquote>
<p>wenn ja wie kann ich das sauber machen?</p>
</blockquote>
<p>In Standard-C++ nur mit std::string (bzw. std::wstring).</p>
</blockquote>
<p>Der Vollständigkeit halber möchte ich nochmal auf den Weg mit boost::array&lt;char&gt; und std::copy hinweisen (ist natürlich nicht für Strings geeignet aber char-Arrays können ja prinzipiell auch etwas anderes ausdrücken als Strings):</p>
<pre><code class="language-cpp">std::size_t const len = 10; // Die Länge der Daten.

boost::array&lt;char, len&gt; ch_arr;
char const* data = &quot;Die Daten&quot;; // Irgendwelche Binärdaten.
std::copy(data, data + len, ch_arr.begin());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1198403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198403</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 27 Dec 2006 12:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 12:46:24 GMT]]></title><description><![CDATA[<p>ich hab ein programm das mit &lt;string&gt; klappt... jedoch erhöhen die streams (z.b. &lt;iostream&gt; oder &lt;string&gt;) die größe meiner .exe ungemein (und ich wollte ein nur knapp 20kb großes programm schreiben).<br />
zudem hab ich mich dabei gefragt, wie die leute das noch zu c zeiten gemacht haben, weil es ist ja anscheinend nicht das leichteste an der sprache <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>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198408</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 27 Dec 2006 12:46:24 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 13:33:04 GMT]]></title><description><![CDATA[<p>neomic schrieb:</p>
<blockquote>
<p>zudem hab ich mich dabei gefragt, wie die leute das noch zu c zeiten gemacht haben...</p>
</blockquote>
<p>na mit den 'strnXXX()' funktionen oder was ähnliches selbtgebasteltes...<br />
:xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198440</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Wed, 27 Dec 2006 13:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 13:51:21 GMT]]></title><description><![CDATA[<p>ten schrieb:</p>
<blockquote>
<p>na mit den 'strnXXX()' funktionen oder was ähnliches selbtgebasteltes...<br />
:xmas2:</p>
</blockquote>
<p>hab ich mir auch schon iwie gedacht...^^</p>
<p>folgenes soll ein kleiner hex parser werden:</p>
<pre><code class="language-cpp">char input[]=&quot;test&quot;;
    int h=strlen(input);
    int i=h*3+2;
    char str[i];
    memset(str,'\0',i);
    for(int i=0;i&lt;h;i++){
        char out[3];
        sprintf(out,&quot;%02x&quot;,static_cast&lt;unsigned char&gt;(input[i]));
        strcat(out,&quot;,&quot;);
        strcat(str,out);
    }
    strcat(str,&quot;00&quot;);
    cout&lt;&lt;str&lt;&lt;endl;
</code></pre>
<p>muss ich hier mit irgendwelchen problemen rechnen? kann man das auch eleganter (-ohne &lt;string&gt;-) lösen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198454</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 27 Dec 2006 13:51:21 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 13:53:04 GMT]]></title><description><![CDATA[<p>neomic schrieb:</p>
<blockquote>
<p>ich hab ein programm das mit &lt;string&gt; klappt... jedoch erhöhen die streams (z.b. &lt;iostream&gt; oder &lt;string&gt;) die größe meiner .exe ungemein</p>
</blockquote>
<p>Solange Du nur mit std::string arbeitest benötigst Du kein #include &lt;iostream&gt;.</p>
<p>neomic schrieb:</p>
<blockquote>
<p>(und ich wollte ein nur knapp 20kb großes programm schreiben).</p>
</blockquote>
<p>Warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198459</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 27 Dec 2006 13:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 13:55:44 GMT]]></title><description><![CDATA[<p>neomic schrieb:</p>
<blockquote>
<p>zudem hab ich mich dabei gefragt, wie die leute das noch zu c zeiten gemacht haben, weil es ist ja anscheinend nicht das leichteste an der sprache <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>Aso, du willst was lernen. Dann machs doch mal ganz ohne die Funktionen aus &lt;cstring&gt;. So richtig übel Handgestrickt mit netten Schlaufen und bösen Ösen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1198460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198460</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Wed, 27 Dec 2006 13:55:44 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 13:58:12 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Solange Du nur mit std::string arbeitest benötigst Du kein #include &lt;iostream&gt;.</p>
</blockquote>
<p>ja aber #include &lt;string&gt; ist 70 kb groß..</p>
<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Warum?</p>
</blockquote>
<p>wieso denn nicht? es ist ein kleines projekt...</p>
<p>THX 1138 schrieb:</p>
<blockquote>
<p>Aso, du willst was lernen. Dann machs doch mal ganz ohne die Funktionen aus &lt;cstring&gt;. So richtig übel Handgestrickt mit netten Schlaufen und bösen Ösen <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>
</blockquote>
<p>hab ich auch schon und es klappt...</p>
<pre><code class="language-cpp">int GetLength(char *pchar){
    int i=0;
    while(pchar[i])i++;
    return i;
}
int Find(char *pchar,char *pcharsearch){
    bool done=false;
    int i=0;
    while(!done){
        int j=0,k;
        if(pchar[i]==pcharsearch[0]){
            k=i;
            while(pchar[i]==pcharsearch[j]){
                j++;
                if(j==GetLength(pcharsearch))done=true;
                if(!done)i++;
            }
            if(pchar[i]!=pcharsearch[j])i=k;
        }
        if(!done)i++;
        if(i==GetLength(pchar)){
                done=true;
                i=-1;
        }
    }
    return i;
}
void Replace(char *pchar,char *pcharreplace,char *pcharout,int entrypoint,int replacewidth=0){
    int length_pcharreplace=GetLength(pcharreplace);
    for(int i=0;i&lt;entrypoint;i++){
        pcharout[i]=pchar[i];
    }
    for(int i=0;i&lt;length_pcharreplace;i++){
        pcharout[i+entrypoint]=pcharreplace[i];
    }
    for(int i=entrypoint;i&lt;GetLength(pchar)-replacewidth+1;i++){
        pcharout[i+length_pcharreplace]=pchar[i+replacewidth];
    }
}
void Add(char *pchar,char *pcharreplace,char *pcharout){
    Replace(pchar,pcharreplace,pcharout,GetLength(pchar));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1198461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198461</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 27 Dec 2006 13:58:12 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 13:57:30 GMT]]></title><description><![CDATA[<p>neomic schrieb:</p>
<blockquote>
<p>wieso denn nicht? es ist ein kleines projekt...</p>
</blockquote>
<p>Weil die Zeiten mit 64kB RAM vorbei sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198463</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Wed, 27 Dec 2006 13:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 14:02:29 GMT]]></title><description><![CDATA[<p>THX 1138 schrieb:</p>
<blockquote>
<p>Weil die Zeiten mit 64kB RAM vorbei sind?</p>
</blockquote>
<p>jetzt sag mir doch wieso denn nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198466</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 27 Dec 2006 14:02:29 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 14:08:00 GMT]]></title><description><![CDATA[<p>Weil die Zeiten mit 64kB RAM vorbei sind!</p>
<p>Ne sorry, es gibt bei PC Anwendungen eigentlich keinen Grund, auf Grösse zu optimieren. Mach das ruhig so, um zu lernen. Aber benutz dann lieber die std::strings und ihre Methoden, die sind sicherer und einfacher zu nutzen weil du dich nicht ums Speichermanagment kümmern brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198470</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Wed, 27 Dec 2006 14:08:00 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 14:08:54 GMT]]></title><description><![CDATA[<p>Es ist ziemlich egal, ob du nun 20 KB oder 200 KB benutzt.<br />
Darüber gibts einen ganzen Wust an Diskussionen hier im Forum. Hast du schonmal versucht die Binärdatei zu strippen? Dann bleibt meist auch nicht mehr viel übrig. Außerdem hat (scheinbar) das PE-Format mit MinGW auch einen (in diesem Bereich) nicht unerheblichen Einfluss auf die Größe.<br />
Wenn du C++ lernen willst, dann benutz auch die C++ Möglichkeiten (hier wären imho Stringstreams angebracht), erst recht jetzt, da du das ganze schon einmal von Hand implementiert hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198471</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 27 Dec 2006 14:08:54 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 14:10:50 GMT]]></title><description><![CDATA[<p>THX 1138 schrieb:</p>
<blockquote>
<p>Weil die Zeiten mit 64kB RAM vorbei sind!</p>
<p>Ne sorry, es gibt bei PC Anwendungen eigentlich keinen Grund, auf Grösse zu optimieren. Mach das ruhig so, um zu lernen. Aber benutz dann lieber die std::strings und ihre Methoden, die sind sicherer und einfacher zu nutzen weil du dich nicht ums Speichermanagment kümmern brauchst.</p>
</blockquote>
<p>1. meine &lt;string&gt; version klappt 100% ist mir aber bei großen datenmengen zu langsam da immer der shic copy-constructor aufgerufen wird<br />
2. ich will auch was über dynamische speicherverwaltung lernen, rate mal warum ich c++ lerne und nicht delphi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198473</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 27 Dec 2006 14:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 14:14:01 GMT]]></title><description><![CDATA[<p>neomic schrieb:</p>
<blockquote>
<p>1. meine &lt;string&gt; version klappt 100% ist mir aber bei großen datenmengen zu langsam da immer der shic copy-constructor aufgerufen wird<br />
2. ich will auch was über dynamische speicherverwaltung lernen, rate mal warum ich c++ lerne und nicht delphi</p>
</blockquote>
<p>1. ev. kannste da was mit call-by-reference optimieren<br />
2. dann lern c und nicht c++<br />
3. nicht böse werden, sind gut gemeinte tipps <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/1198478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198478</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Wed, 27 Dec 2006 14:14:01 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 14:17:12 GMT]]></title><description><![CDATA[<p>THX 1138 schrieb:</p>
<blockquote>
<p>1. ev. kannste da was mit call-by-reference optimieren<br />
2. dann lern c und nicht c++<br />
3. nicht böse werden, sind gut gemeinte tipps <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>zu 1: wie geht das denn?^^<br />
zu 2: new und delete sind doch erst mit c++ dazugekommen oder irre ich? o.0<br />
zu 3: ich werd nich böse nur ernst, weil ihr die ganze zeit um den heißen brei drumrumredet... <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="😉"
    /> also nich denken ich mag euch net oder so (das stimmt nämlich net)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198482</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 27 Dec 2006 14:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 14:22:39 GMT]]></title><description><![CDATA[<p>3. easy<br />
2. ja, ersetzen malloc und free<br />
1. zeig mal deine Standard-C++ Lösung, dann kann ich dir vielleicht helfen.</p>
<p>Ansonsten kurz erklärt</p>
<p>Call by Value:</p>
<pre><code class="language-cpp">void do_something_with_it( HugeClass it );  // Copy-Ctor wird aufgerufen
</code></pre>
<p>Call by Reference:</p>
<pre><code class="language-cpp">void do_something_with_it( HugeClass&amp; it );  // Copy-Ctor wird nicht aufgerufen, it kann verändert werden
</code></pre>
<p>Call by Const-Reference:</p>
<pre><code class="language-cpp">void do_something_with_it( const HugeClass&amp; it );  // Copy-Ctor wird nicht aufgerufen, it kann nicht verändert werden
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1198486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198486</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Wed, 27 Dec 2006 14:22:39 GMT</pubDate></item><item><title><![CDATA[Reply to fragen zu strcpy() und strcat() on Wed, 27 Dec 2006 14:22:27 GMT]]></title><description><![CDATA[<p>neomic schrieb:</p>
<blockquote>
<p>meine &lt;string&gt; version klappt 100% ist mir aber bei großen datenmengen zu langsam da immer der shic copy-constructor aufgerufen wird</p>
</blockquote>
<p>Und du glaubst, das lässt sich nicht optimieren? Zeig mal den Code!</p>
<p>neomic schrieb:</p>
<blockquote>
<p>2. ich will auch was über dynamische speicherverwaltung lernen, rate mal warum ich c++ lerne und nicht delphi</p>
</blockquote>
<p>Der Trick an der dynamischen Speicherverwaltung ist, dass sie richtig eingesetzt extrem effizient ist, der Programmierer aber trotzdem nicht viel davon sieht. Man kapselt den Zeigerkram einfach weg. Direkt am Speicher rumzuwurschteln machst du eigentlich nur in der Kapselung und in C.</p>
<p>neomic schrieb:</p>
<blockquote>
<p>zu 1: wie geht das denn?^^</p>
</blockquote>
<p>Du benutzt Referenzparameter. Das erspart die Kopie.</p>
<p>neomic schrieb:</p>
<blockquote>
<p>zu 2: new und delete sind doch erst mit c++ dazugekommen oder irre ich? o.0</p>
</blockquote>
<p>Ja und? malloc und free sind die äquivalenten Funktionen in C. Der Bedarf nach new und delete kam daher, dass bei C++ Objekten auch der Konstruktor aufgerufen werden muss (wobei das denke ich auch mit Templates gelöst werden kann, die gabs damals aber noch nicht).</p>
<p>neomic schrieb:</p>
<blockquote>
<p>zu 3: ich werd nich böse nur ernst, weil ihr die ganze zeit um den heißen brei drumrumredet... <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>Nein, wir suchen nur ein einfacher und schöner lösbares Problem. Und strcpy und Konsorten sind nunmal nicht der C++ Weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198488</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 27 Dec 2006 14:22:27 GMT</pubDate></item></channel></rss>