<?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[strcpy() Fehler der mich völlig verwirrt...]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>also ich hab ein Problem das ich absolut nicht verstehe.</p>
<p>Erstmal der Code meiner Klasse:</p>
<pre><code class="language-cpp">class Product
{
private:
	char* bezeichng;
public:
	Product(char* bez = &quot;default&quot;);
};

Product::Product(char* bez)
{
	strcpy(bezeichng,bez);
}
</code></pre>
<p>Beim compilieren bekomme ich folgende Warnung:</p>
<blockquote>
<p>warning C4996: 'strcpy' was declared deprecated</p>
</blockquote>
<p>Wenn ich starte bekomme ich ein Laufzeitfehler, weil ein Maschinenbefehl von strcpy einen Fehler verursacht.<br />
Was bitte ist an diesem Code falsch? Bin ich völlig blind?</p>
<p>Vielen Dank schonmal im voraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150159/strcpy-fehler-der-mich-völlig-verwirrt</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 13:44:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150159.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Jun 2006 16:12:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 16:12:42 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>also ich hab ein Problem das ich absolut nicht verstehe.</p>
<p>Erstmal der Code meiner Klasse:</p>
<pre><code class="language-cpp">class Product
{
private:
	char* bezeichng;
public:
	Product(char* bez = &quot;default&quot;);
};

Product::Product(char* bez)
{
	strcpy(bezeichng,bez);
}
</code></pre>
<p>Beim compilieren bekomme ich folgende Warnung:</p>
<blockquote>
<p>warning C4996: 'strcpy' was declared deprecated</p>
</blockquote>
<p>Wenn ich starte bekomme ich ein Laufzeitfehler, weil ein Maschinenbefehl von strcpy einen Fehler verursacht.<br />
Was bitte ist an diesem Code falsch? Bin ich völlig blind?</p>
<p>Vielen Dank schonmal im voraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077016</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Tue, 13 Jun 2006 16:12:42 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 16:17:58 GMT]]></title><description><![CDATA[<p>Du bekommst einen Laufzeitfehler (und hast bei Sprachen<br />
wie C/C++ da sogar Glück gehabt, daß du überhaupt auf den<br />
Fehler hingewiesen wurdest), weil du den übergebenen<br />
String ins Nirwana (oder sonstwohin) kopierst.</p>
<p>Du mußt vorher Speicher allozieren:</p>
<pre><code>bezeichnung = (char *) malloc(strlen(bez) * sizeof(char));
   strcpy(bezeichng,bez);
</code></pre>
<p>oder du benutzt gleich die in C++ definierte Klasse String, die<br />
sich umsowas automatisch kümmert.</p>
<p>Ich habe aber schon Jahre nicht mehr in C++ geproggt, also<br />
keine Ahnung wie die anzuwenden ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077019</guid><dc:creator><![CDATA[Javaner]]></dc:creator><pubDate>Tue, 13 Jun 2006 16:17:58 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 16:18:13 GMT]]></title><description><![CDATA[<p>Du has ja gar kein Speicher geholt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077020</guid><dc:creator><![CDATA[LOL!]]></dc:creator><pubDate>Tue, 13 Jun 2006 16:18:13 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 16:24:48 GMT]]></title><description><![CDATA[<p>sollte man nicht eher new verwenden da c++ ?<br />
also eher sowas wie da unten...<br />
zerstören über delete[]</p>
<p>oder halt wie gesagt mit strings arbeiten...</p>
<pre><code class="language-cpp">bezeichnung = new Char[strlen(bez)];
   strcpy(bezeichng,bez);

delete[] bezeichnung;
</code></pre>
<p>edit: nicht getestet, bin mir nich 100% sicher...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077022</guid><dc:creator><![CDATA[ConfusedGuy]]></dc:creator><pubDate>Tue, 13 Jun 2006 16:24:48 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 16:50:49 GMT]]></title><description><![CDATA[<p>Hoi,<br />
das...</p>
<p>ConfusedGuy schrieb:</p>
<blockquote>
<pre><code class="language-cpp">bezeichnung = new Char[strlen(bez)];
   strcpy(bezeichng,bez);

delete[] bezeichnung;
</code></pre>
</blockquote>
<p>solltest du nicht genau übernehmen; Das ist zwar richtig, jedoch sollte vorher geprüft werden, ob 'bez' ungleich NULL ist, sonst gibts ne Speicherverletzung! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<pre><code class="language-cpp">Product::Product(char* bez)
{
    if(bez != NULL)
    {
        bezeichng = new char[strlen(bez) + 1];
        strcpy(bezeichng, bez);
    }    
}
</code></pre>
<p>im Desturktor dann ein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
<pre><code class="language-cpp">Product::~Product(void)
{
    delete [] bezeichng;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1077032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077032</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 13 Jun 2006 16:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 16:59:37 GMT]]></title><description><![CDATA[<p>Also das strlen(...)<strong>+1</strong> kann man sich sparen.<br />
Das Wort &quot;Hallo&quot; hat 5 Buchstaben. strlen liefert also 5. Somit liegt das H bei bez+0 und das o an der Speicherstelle bez+4 und somit völlig im bereich.</p>
<p>speicherverletzung?? sicherlich. wenn bez nach der alloziierung ungleich 0 sein sollte, würde ich mir weniger sorgen um ne speicherverletzung als um extremen speichermangel überhaupt machen.</p>
<p>ansonsten ist der code natürlich lieb und fein und vorbildlich und es sollte ja niemanden nen finger abbrechen doch nen paar mehr zeilen zu tippen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077037</guid><dc:creator><![CDATA[_____nobody_____]]></dc:creator><pubDate>Tue, 13 Jun 2006 16:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 17:01:37 GMT]]></title><description><![CDATA[<p>Alles ausser std::string ist inakzeptabel....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077038</guid><dc:creator><![CDATA[............]]></dc:creator><pubDate>Tue, 13 Jun 2006 17:01:37 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 17:40:02 GMT]]></title><description><![CDATA[<p><em><strong><strong>nobody</strong></strong></em> schrieb:</p>
<blockquote>
<p>Also das strlen(...)<strong>+1</strong> kann man sich sparen.<br />
Das Wort &quot;Hallo&quot; hat 5 Buchstaben. strlen liefert also 5. Somit liegt das H bei bez+0 und das o an der Speicherstelle bez+4 und somit völlig im bereich.</p>
</blockquote>
<p>jaja, das hab ich mir angewöhnt, ist hier zwar unnötig, aber verwende ich immer in nem anderen Kontext...schaden kanns nicht (es sei denn du bist arm und kannst dir keinen 'guten' PC leisten, dem nicht genug Arbeitsspeicher zur Verfügung steht)</p>
<p><em><strong><strong>nobody</strong></strong></em> schrieb:</p>
<blockquote>
<p>speicherverletzung?? sicherlich. wenn bez nach der alloziierung ungleich 0 sein sollte, würde ich mir weniger sorgen um ne speicherverletzung als um extremen speichermangel überhaupt machen.</p>
</blockquote>
<p>du hats gar nix gecheckt oder ? ...also ich kann weit und breit keine Alloziierung von 'bez' finden...es geht nur um die Definition einer fehlerunanfälligen Methode...wenn also irgendein Spassvogel sowas macht:</p>
<pre><code class="language-cpp">char *ptr = NULL
// Keine init!
Product produktDemo(ptr);
</code></pre>
<p>würde, nach deinem Programmierstil, das Programm in alle ewigen Software-Himmel katapultiert <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="😃"
    /> <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="😃"
    /> ...tja: <strong>GENAUER LESEN!</strong> -&gt; LOL</p>
<p><em><strong><strong>nobody</strong></strong></em> schrieb:</p>
<blockquote>
<p>ansonsten ist der code natürlich lieb und fein und vorbildlich und es sollte ja niemanden nen finger abbrechen doch nen paar mehr zeilen zu tippen.</p>
</blockquote>
<p>tja, weißt du...du wärst sicherlich einer, bei dem ich mir nicht solche Arbeit machen würde...ist sowieso n bisschen erbärmlich ne [...], als ungereggter so eine Scheiße zu posten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>............ schrieb:</p>
<blockquote>
<p>Alles ausser std::string ist inakzeptabel....</p>
</blockquote>
<p>Da hast du Recht, allerdings ist der erste Post auch 'im C-Stil' verfasst.</p>
<p>PS: nicht immer ist std::string sinnvoll - mal davon abgesehen, das ich immer noch nicht weiß, was er bzwecken will - bei kleinen OPs ist char schneller! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077069</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 13 Jun 2006 17:40:02 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 17:57:43 GMT]]></title><description><![CDATA[<p>strlen(...)+1 ist richtig, da strcpy auch noch die Nullterminierung mit kopiert und dann ist Hallo 6 Zeichen lang.<br />
Und wegen diesem ganzen Mist sollte man std::string nehmen. Das ist auch nicht sehr viel langsamer. Ich kannte mal ne Seite, da haben die Benchmarks gemacht, weiß die aber leider nicht mehr.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077076</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Tue, 13 Jun 2006 17:57:43 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 17:59:46 GMT]]></title><description><![CDATA[<p><em><strong><strong>nobody</strong></strong></em> schrieb:</p>
<blockquote>
<p>Also das strlen(...)<strong>+1</strong> kann man sich sparen.<br />
Das Wort &quot;Hallo&quot; hat 5 Buchstaben. strlen liefert also 5. Somit liegt das H bei bez+0 und das o an der Speicherstelle bez+4 und somit völlig im bereich.</p>
</blockquote>
<p>Du hast das Nullbyte vergessen. Setzen, sechs.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12048">@CodeFinder</a>:<br />
Und Du hast Dich von einem Troll aus der Fassung bringen lassen :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077078</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 13 Jun 2006 17:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 18:09:02 GMT]]></title><description><![CDATA[<p>WAH, ich bin wirklich blind. Ich habs verdient mal kräftig aufn Hintern zu bekommen <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="😃"
    /><br />
Jungs danke, und streitet nicht: eine Speicherverletzung wird es bei &quot;bez&quot; nie geben, siehe:</p>
<pre><code class="language-cpp">Product(char* bez = &quot;default&quot;);
</code></pre>
<p>Vielen Dank das ihr einem Blinden geholfen habt...</p>
<p>PS: die Warnung kommt immernoch, aber jetzt geht es logischerweise; wegen der Warnung, keine Ahnung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077083</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Tue, 13 Jun 2006 18:09:02 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 18:14:43 GMT]]></title><description><![CDATA[<p>Tobias W schrieb:</p>
<blockquote>
<p>Jungs danke, und streitet nicht: eine Speicherverletzung wird es bei &quot;bez&quot; nie geben, siehe:</p>
<pre><code class="language-cpp">Product(char* bez = &quot;default&quot;);
</code></pre>
</blockquote>
<p>Und was hindert da einen bösen Programmierer daran, Product(0) aufzurufen?!</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>nicht immer ist std::string sinnvoll - mal davon abgesehen, das ich immer noch nicht weiß, was er bzwecken will</p>
</blockquote>
<p>Hmm, möglicherweise soll er bezwecken, dass ein C++-Programmierer nicht mit Zeigern rumwurschteln muss, nur weil er eine Zeichenkette verarbeiten will.</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>bei kleinen OPs ist char schneller!</p>
</blockquote>
<p>char ist natürlich schneller, (meistens) ein Byte zu verarbeiten ist ja auch nicht so schwer. Wenn du C-Strings meinst, dann schreib das auch. Und wieso meinst du das? Beweise?! Nach der String-Implementierung in der libstdc++ ist da kaum Overhead. Den einzigen Vorteil haben Char-Arrays, wenn man weiß, wie groß der String wird. Dann spart man sich den Heap-Krams.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077094</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 13 Jun 2006 18:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 18:22:16 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Tobias W schrieb:</p>
<blockquote>
<p>Jungs danke, und streitet nicht: eine Speicherverletzung wird es bei &quot;bez&quot; nie geben, siehe:</p>
<pre><code class="language-cpp">Product(char* bez = &quot;default&quot;);
</code></pre>
</blockquote>
<p>Und was hindert da einen bösen Programmierer daran, Product(0) aufzurufen?!</p>
</blockquote>
<p>vor allem ist die speicherverlatzung dann garantiert. denn CodeFinder hat es versäumt, diesen Fall richtig zu behandeln - folglich kommt es dann spätestens im destruktor zu undefiniertem verhalten. <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="😉"
    /> im übriges sollte der konstruktor wohl besser ein const char* argument erhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077103</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 13 Jun 2006 18:22:16 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 19:54:49 GMT]]></title><description><![CDATA[<p>Hui...^^<br />
________________________________________________________________________________________<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6950">@joomoo</a>:</p>
<p>joomoo schrieb:</p>
<blockquote>
<p>strlen(...)+1 ist richtig, da strcpy auch noch die Nullterminierung mit kopiert und dann ist Hallo 6 Zeichen lang.</p>
</blockquote>
<p>...mein ich doch, DANKE! <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>
<p>________________________________________________________________________________________<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a>:</p>
<p>LordJaxom schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12048">@CodeFinder</a>:<br />
Und Du hast Dich von einem Troll aus der Fassung bringen lassen</p>
</blockquote>
<p>Jup da haste wohl Recht... *vor den kopf hau* ^^ ...danke!!! <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>BTW für unseren Troll (schöne Bezeichnung! ):</p>
<pre><code>Das wär die Speicherbelegung:

char szWelcome[] = &quot;Hallo&quot;;
-------------------------
 0 | 1 | 2 | 3 | 4 | 5  |
---|---|---|---|---|----|
 H | a | l | l | o | \0 |  &lt;- &quot;Du hast das Nullbyte vergessen.&quot;
-------------------------
</code></pre>
<p>________________________________________________________________________________________</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/34826">@Tobias</a> W:</p>
<p>Tobias W schrieb:</p>
<blockquote>
<p>PS: die Warnung kommt immernoch, aber jetzt geht es logischerweise; wegen der Warnung, keine Ahnung...</p>
</blockquote>
<p>hmm seltsam...vllt. mal vollständiger Rebuild...sicher das es anner gleichen Stelle auftritt ?<br />
naja und zur Not (aber in diesem Fall wohl sehr dirty...es muss ja irg n Grund für die Warnung geben^^):</p>
<pre><code class="language-cpp">// Achtung: Compiler abhängig!
#pragma warning(disable: 4996)
// Blockanfang in dem die Warnung auftritt:
// ...
// ...
// ...
// Blockende
#pragma warning(default: 4996)
</code></pre>
<p>________________________________________________________________________________________</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9606">@.filmor</a>:</p>
<p>.filmor schrieb:</p>
<blockquote>
<p>CodeFinder schrieb:<br />
nicht immer ist std::string sinnvoll - mal davon abgesehen, das ich immer noch nicht weiß, was er bzwecken will<br />
Hmm, möglicherweise soll er bezwecken, dass ein C++-Programmierer nicht mit Zeigern rumwurschteln muss, nur weil er eine Zeichenkette verarbeiten will.</p>
</blockquote>
<p>Das war wohl n Missverständnis... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> denn das: &quot;das ich immer noch nicht weiß, was er bzwecken will&quot; war nicht auf std::string, sondern auf die Frage dieses Threads bezogen <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="😉"
    /> ...wobei -LOL- mir gerade auffällt, dass das n ganz anderes Thema war...wohl verwechselt...tja daran war wohl dieser 'Troll' ((C) by LordJaxom - genial ) Schuld.</p>
<blockquote>
<p>Wenn du C-Strings meinst, dann schreib das auch.</p>
</blockquote>
<p>sry natürlich waren C-Strings gemeint <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>Und wieso meinst du das? Beweise?! Nach der String-Implementierung in der libstdc++ ist da <strong>kaum</strong> Overhead. Den einzigen Vorteil haben Char-Arrays, wenn man weiß, wie groß der String wird. Dann spart man sich den Heap-Krams.</p>
</blockquote>
<p>Hmm...Aber es liegt doch wohl auf der Hand das ein Char-Array (also ein C-String <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="😉"
    /> ) weniger Speicher verbraucht als ein Objekt der Klasse std::string! ...</p>
<p>PS: &quot;Den einzigen Vorteil haben Char-Arrays, wenn man weiß, wie groß der String wird.&quot;...jo klar!</p>
<p>________________________________________________________________________________________</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a>:</p>
<pre><code>denn CodeFinder hat es versäumt, diesen Fall richtig zu behandeln
</code></pre>
<p>Huh!? ... Hab ich doch:</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Product::Product(char* bez)
{
    if(bez != NULL)
    {
        bezeichng = new char[strlen(bez) + 1];
        strcpy(bezeichng, bez);
    }    
}
</code></pre>
</blockquote>
<p>oder nicht <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="😕"
    /> ... lass mich gern belehren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> ^^</p>
<blockquote>
<p>im übriges sollte der konstruktor wohl besser ein const char* argument erhalten</p>
</blockquote>
<p>stimmt! <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="👍"
    /> , gar nicht dran gedacht</p>
<p>________________________________________________________________________________________</p>
<p>jo dat waren dann alle, Wow was n Post^^ ----&gt; allen noch n schönen Abend <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/1077174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077174</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 13 Jun 2006 19:54:49 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 19:59:26 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>denn CodeFinder hat es versäumt, diesen Fall richtig zu behandeln</p>
</blockquote>
<p>Huh!? ... Hab ich doch:</p>
<pre><code class="language-cpp">Product::Product(char* bez)
{
    if(bez != NULL)
    {
        bezeichng = new char[strlen(bez) + 1];
        strcpy(bezeichng, bez);
    }    
}
</code></pre>
</blockquote>
<p>und welchen wert hat bezeichng hier nach beendigung des konstruktors, wenn bez NULL war?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077177</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 13 Jun 2006 19:59:26 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 20:55:44 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a>:<br />
Hmm, das weiß wohl nur der Herr im Himmel :p ... ok hast Recht <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="👍"
    /> ...also schließen wir das mit:</p>
<pre><code class="language-cpp">Product::Product(const char* pszBezeichnung)
{
    if(pszBezeichnung != NULL)
    {
        try
        {
            bezeichng = new char[strlen(pszBezeichnung) + 1];
            strcpy(bezeichng, pszBezeichnung);
        }
        catch(...)
        {
            cout &lt;&lt; &quot;FEHLER&quot; &lt;&lt; endl;
            bezeichng = NULL;
        }
    }
    else
       bezeichng = NULL;
    // Hier folgt dann höchst warscheinlich weiterer Code...
    // ...
}
</code></pre>
<p>PS: Das ExceptionHandling ist ein bisschen primitiv aber...es kracht wenigstens <strong>nie</strong> :p (ein kleiner Bonus)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077220</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 13 Jun 2006 20:55:44 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 21:28:36 GMT]]></title><description><![CDATA[<p>Einen Fehler hast du rausgehauen und einen neuen reingebaut. Du wirfst die Exception nicht weiter. Ich glaube kaum, dass du das bezweckts. Fals doch würde ich eher zu new(std::nothrow) raten. Das gibt NULL zurück wenn kein Speicher mehr frei ist und du sparst die hier verhältnismässig doch recht teuren Exceptions.</p>
<p>Mal ganz davon abgesehen brauchst du hier gar keinen try Block denn fals der Konstruktor durch eine Exception verlassen wird dann wird kein Destruktor aufgerufen der Probleme machen könnte.</p>
<p>Richtig wäre es also:</p>
<pre><code class="language-cpp">Product::Product(const char* pszBezeichnung)
{
    if(pszBezeichnung != NULL)
    {
        bezeichng = new char[strlen(pszBezeichnung) + 1];I
        strcpy(bezeichng, pszBezeichnung);
    }
    else
       bezeichng = NULL;
}
</code></pre>
<p>wobei ich dann doch eher zu</p>
<pre><code class="language-cpp">Product::Product(const char* pszBezeichnung)
{
    if(pszBezeichnung != NULL)
    {
        bezeichng = new char[strlen(pszBezeichnung) + 1];
        strcpy(bezeichng, pszBezeichnung);
    }
    else
       throw my_exception();
}
</code></pre>
<p>oder gar</p>
<pre><code class="language-cpp">Product::Product(const char* pszBezeichnung)
{
    assert(pszBezeichnung != NULL);
    bezeichng = new char[strlen(pszBezeichnung) + 1];
    strcpy(bezeichng, pszBezeichnung);
}
</code></pre>
<p>tendiren würde denn es würde mich wundern wenn bezeichng == NULL ein sinvoller Zustand ist und nicht ein Zombieobjekt.</p>
<p>PS: Das &quot;u&quot; in &quot;bezeichng&quot; würd ich mir auch noch leisten. Soviel Tiparbeit spart man da auch nicht. <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/1077233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077233</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Tue, 13 Jun 2006 21:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 22:09:51 GMT]]></title><description><![CDATA[<p>Ben04 schrieb:</p>
<blockquote>
<p>Einen Fehler hast du rausgehauen und einen neuen reingebaut. Du wirfst die Exception nicht weiter. Ich glaube kaum, dass du das bezweckts.</p>
</blockquote>
<p>DOCH!!! -&gt; Es ging mir darum ALLE möglichen Exceptions aufzufangen (-&gt; catch(...))!!! und außerdem:</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>PS: Das ExceptionHandling ist ein bisschen!!!<strong>primitiv</strong>!!! aber...es kracht wenigstens nie [...]</p>
</blockquote>
<p>Ben04 schrieb:</p>
<blockquote>
<p>Mal ganz davon abgesehen brauchst du hier gar keinen try Block denn fals der Konstruktor durch eine Exception verlassen wird dann wird kein Destruktor aufgerufen der Probleme machen könnte.</p>
</blockquote>
<p>...wo wird er denn 'durch eine Exception verlassen' ???</p>
<p>PS_1: Den Variablen Name &quot;bezeichng&quot; hab ich gar nicht erfunden, sondern der Herr Tobias W <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="😃"
    /> außerdem fehlt da nicht nur ein 'u', sondern auch ein 'n' -LOL-</p>
<p>PS_2: &quot;falls&quot; schreibt man mit doppel 'l' <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>PS_3:</p>
<blockquote>
<p>tendiren würde denn es würde mich wundern wenn bezeichng == NULL ein sinvoller Zustand ist und nicht ein Zombieobjekt.</p>
</blockquote>
<p>tja, bei mir is NULL der Beweis (das Zeichen) für einen ungültigen Zeiger, außerdem halt ich nicht viel von assert...tja, wohl Ansichtssache :p</p>
<p>PS_4: Musstest du jetzt meinen schönen Schlusspost so zerrütteln^^ <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/1077242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077242</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 13 Jun 2006 22:09:51 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 22:23:01 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>Ben04 schrieb:</p>
<blockquote>
<p>Einen Fehler hast du rausgehauen und einen neuen reingebaut. Du wirfst die Exception nicht weiter. Ich glaube kaum, dass du das bezweckts.</p>
</blockquote>
<p>DOCH!!! -&gt; Es ging mir darum ALLE möglichen Exceptions aufzufangen (-&gt; catch(...))!!! und außerdem:</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>PS: Das ExceptionHandling ist ein bisschen!!!<strong>primitiv</strong>!!! aber...es kracht wenigstens nie [...]</p>
</blockquote>
</blockquote>
<p>da wird nichts sinnvoll gehandeled. nur gecatched. ist also nur Exception Catching - und das ist primtiv <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="😉"
    /> (und widerspricht geradezu dem zweck von exceptions).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077248</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 13 Jun 2006 22:23:01 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Tue, 13 Jun 2006 23:46:54 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>und das ist primtiv</p>
</blockquote>
<p><strong>=</strong></p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>ein bisschen primitiv</p>
</blockquote>
<p>Ist das so schwer ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>...</p>
<p>camper schrieb:</p>
<blockquote>
<p>da wird nichts sinnvoll gehandeled. nur gecatched</p>
</blockquote>
<p>hmm komisch genau das wollte ich hier erreichen:</p>
<p>CodeFinder schrieb:</p>
<blockquote>
<p>es kracht wenigstens <strong>nie</strong></p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1077263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077263</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 13 Jun 2006 23:46:54 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Wed, 14 Jun 2006 11:43:07 GMT]]></title><description><![CDATA[<p>Tobias W schrieb:</p>
<blockquote>
<p>PS: die Warnung kommt immernoch, aber jetzt geht es logischerweise; wegen der Warnung, keine Ahnung...</p>
</blockquote>
<p>Naja, wenn man weiss, wie solche Funktionen zu handeln sind, kann man die Warnung getrost ignorieren. Ein</p>
<pre><code class="language-cpp">#define _CRT_SECURE_NO_DEPRECATE
</code></pre>
<p>_vor_ den Includes sollte die Warnung zur Not auch abstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077521</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Wed, 14 Jun 2006 11:43:07 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy() Fehler der mich völlig verwirrt... on Wed, 14 Jun 2006 16:03:42 GMT]]></title><description><![CDATA[<p>Naja, die Warnung stört mich kaum, da es nur ein &quot;Testprogramm&quot; war um virtuelle Methoden, abstakte Klassen (etc.) ein bisschen zu üben.<br />
Deswegen ist bei diesem Programm ein try...catch nicht notwendig.</p>
<p>Aber ich sehe schon, dass ich bei einem größeren Projekt noch sehr viel zu lernen habe. Ich würde wohl viele undichte Stellen übersehen.</p>
<p>Naja, man lernt nie aus. Vorallem ich, da ich erst seit einem halben Jahr c++ lerne...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077745</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Wed, 14 Jun 2006 16:03:42 GMT</pubDate></item></channel></rss>