<?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[String-Klasse stürzt ab]]></title><description><![CDATA[<p>Hallo, ich habe ein Problem mit meiner String-Klasse. Sobald ich das</p>
<pre><code class="language-cpp">delete[] chars;
</code></pre>
<p>in der Reserve-Funktion auskommentiere stüzt das Programm ab. Jemand eine Idee woran das liegt? Ich bin echt ratlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289776/string-klasse-stürzt-ab</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 21:46:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289776.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Jul 2011 15:59:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String-Klasse stürzt ab on Sun, 24 Jul 2011 20:29:35 GMT]]></title><description><![CDATA[<p>Hallo, ich habe ein Problem mit meiner String-Klasse. Sobald ich das</p>
<pre><code class="language-cpp">delete[] chars;
</code></pre>
<p>in der Reserve-Funktion auskommentiere stüzt das Programm ab. Jemand eine Idee woran das liegt? Ich bin echt ratlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091925</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Sun, 24 Jul 2011 20:29:35 GMT</pubDate></item><item><title><![CDATA[Reply to String-Klasse stürzt ab on Tue, 12 Jul 2011 16:03:07 GMT]]></title><description><![CDATA[<p>Bitte noch die Klassendefinition zeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091928</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 12 Jul 2011 16:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to String-Klasse stürzt ab on Tue, 12 Jul 2011 16:07:52 GMT]]></title><description><![CDATA[<p>Auf den ersten Blick fehlt schonmal der Zuweisungs-Operator <code>String&amp; operator=(const String&amp; other);</code> , also legt der Compiler bei Bedarf einen eigenen an, der allerdings nicht zu deinem Kopier-Konstruktor und Destruktor passt.</p>
<p>Ansonsten wäre es hilfreich, wenn du mal den Anwendungscode postest, bei dem der Fehler auftritt - und im Debugger genau verfolgst, wo das Programm abstürtzt.</p>
<p>PS: Was hast du eigentlich gegen std::wstring?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091931</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 12 Jul 2011 16:07:52 GMT</pubDate></item><item><title><![CDATA[Reply to String-Klasse stürzt ab on Tue, 12 Jul 2011 16:19:17 GMT]]></title><description><![CDATA[<p>Auf den ersten Blick sehe ich 2 Probleme:<br />
1. in Clear wird das delete immer ausgeführt, das ist für sich genommen kein Problem, allerdings wird chars im Anschluss auch nicht auf 0 gesetzt. Das für dann zu doppelter Freigabe führen wenn jemand z.B. zweimal Clear aufruft oder nach einem Clear der Destruktor ausgeführt wird.<br />
2. An dem delete in reserve ist nicht per se etwas auszusetzen, allerdings gibt es ggf. ein Problem wenn zuvor Clear aufgerufen wurde (s.o.)<br />
Es wird nicht geprüft, of capacity &lt; length gilt, in diesem Fall würde zuviel kopiert werden.</p>
<p>Da du ohnehin die wcs-Funktionen benutzt - warum nicht auch wcscat statt der manuellen Kopien in Append?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091937</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 12 Jul 2011 16:19:17 GMT</pubDate></item><item><title><![CDATA[Reply to String-Klasse stürzt ab on Tue, 12 Jul 2011 18:20:13 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 />
Danke dir. Ich musste in der Clear()-Funktion noch</p>
<pre><code class="language-cpp">chars = nullptr;
</code></pre>
<p>einfügen. Muss man dann nicht auch normale Pointer besser auf &quot;nullptr&quot; setzen, oder ist das wieder was anderes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091980</guid><dc:creator><![CDATA[Student83]]></dc:creator><pubDate>Tue, 12 Jul 2011 18:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to String-Klasse stürzt ab on Tue, 12 Jul 2011 18:31:58 GMT]]></title><description><![CDATA[<p>Student83 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
Danke dir. Ich musste in der Clear()-Funktion noch</p>
<pre><code class="language-cpp">chars = nullptr;
</code></pre>
<p>einfügen. Muss man dann nicht auch normale Pointer besser auf &quot;nullptr&quot; setzen, oder ist das wieder was anderes?</p>
</blockquote>
<p>Was ist denn ein normaler Pointer? Du musst auch überhaupt nichts 0 setzen, wenn entsprechende Invarianten gelten.<br />
Impliziert beispielsweise capacity==0 =&gt; chars==0 (und length == 0 sowieso), könnte das als Test genügen:</p>
<pre><code class="language-cpp">void String::Clear()
{
    if ( capacity != 0 )
    {
        delete[] chars;
        capacity = 0;
        length = 0;
    }
}
</code></pre>
<p>Das kann unter Umständen auch dem Compiler helfen, besser zu optimieren.</p>
<p>Wie schon zuvor von CStoll erwähnt, eine copy-Zuweisung implementieren müssen.<br />
Den Zuweisungsopertor für wchar_t solltest du evtl. auch noch einmal überdenken (im Prinzip ist er ohnehin überflüssig):</p>
<pre><code class="language-cpp">String foo = L&quot;abcd&quot;;
foo = foo.ToCString(); // ups
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2091986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091986</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 12 Jul 2011 18:31:58 GMT</pubDate></item></channel></rss>