<?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[Debug fehler]]></title><description><![CDATA[<pre><code class="language-cpp">class String {
   private:
   char *buffer;
   unsigned int len;

   public:
   // Konstruktoren
   String( const char* s=&quot;&quot;) {
      len = strlen(s);
      buffer = new char [len+1];
      strcpy( buffer, s );
   }
   // Destruktor
   ~String() { delete [] buffer; }
   // Kopier-Konstruktor - explizit nötig da
   // dynamischer Speicherbereich verwendet wird
   String( const String&amp; s ) {
      len = s.len;
      buffer = new char [len+1];
      strcpy( buffer, s.buffer );
   } 
   // Zugriffsmethdoe
   char* get_String() const { return buffer; }
   // Defintion der Operator-Überladung  
   String operator+=( const String&amp; str1 ) {
      // tmp gleich mit aktuellen Objekt initialisieren
      String tmp(*this);
      // Aktuelles Objekt löschen
      delete [] buffer;
      // Gesamtlänge beider Objekte ermitteln
      len = tmp.len + str1.len;
      // Speicher reservieren
      buffer = new char[len];
      // linker Operand in buffer kopieren
      strcpy( buffer, tmp.buffer );
      // rechten Operand anhängen
      strcat( buffer, str1.buffer );
      // Zurück und fertig
      return buffer;
   }       
};

int main() {
   String string1(&quot;Adam&quot;);
   String string2(&quot;Eva&quot;);

   string1+=&quot; und &quot;;
   string1 += string2;   
   cout &lt;&lt; string1.get_String() &lt;&lt; &quot;\n&quot;;
   return 0;
}
</code></pre>
<p>wenn ich dieses Programm ausführe bekomme ich eine Visual C++ Debug Error meldung.<br />
Woran liegt das?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216520/debug-fehler</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 09:51:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216520.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Jun 2008 08:00:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Debug fehler on Wed, 25 Jun 2008 08:00:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class String {
   private:
   char *buffer;
   unsigned int len;

   public:
   // Konstruktoren
   String( const char* s=&quot;&quot;) {
      len = strlen(s);
      buffer = new char [len+1];
      strcpy( buffer, s );
   }
   // Destruktor
   ~String() { delete [] buffer; }
   // Kopier-Konstruktor - explizit nötig da
   // dynamischer Speicherbereich verwendet wird
   String( const String&amp; s ) {
      len = s.len;
      buffer = new char [len+1];
      strcpy( buffer, s.buffer );
   } 
   // Zugriffsmethdoe
   char* get_String() const { return buffer; }
   // Defintion der Operator-Überladung  
   String operator+=( const String&amp; str1 ) {
      // tmp gleich mit aktuellen Objekt initialisieren
      String tmp(*this);
      // Aktuelles Objekt löschen
      delete [] buffer;
      // Gesamtlänge beider Objekte ermitteln
      len = tmp.len + str1.len;
      // Speicher reservieren
      buffer = new char[len];
      // linker Operand in buffer kopieren
      strcpy( buffer, tmp.buffer );
      // rechten Operand anhängen
      strcat( buffer, str1.buffer );
      // Zurück und fertig
      return buffer;
   }       
};

int main() {
   String string1(&quot;Adam&quot;);
   String string2(&quot;Eva&quot;);

   string1+=&quot; und &quot;;
   string1 += string2;   
   cout &lt;&lt; string1.get_String() &lt;&lt; &quot;\n&quot;;
   return 0;
}
</code></pre>
<p>wenn ich dieses Programm ausführe bekomme ich eine Visual C++ Debug Error meldung.<br />
Woran liegt das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535301</guid><dc:creator><![CDATA[Operator überladung]]></dc:creator><pubDate>Wed, 25 Jun 2008 08:00:36 GMT</pubDate></item><item><title><![CDATA[Reply to Debug fehler on Wed, 25 Jun 2008 08:02:18 GMT]]></title><description><![CDATA[<p>Operator überladung schrieb:</p>
<blockquote>
<p>wenn ich dieses Programm ausführe bekomme ich eine Visual C++ Debug Error meldung.<br />
Woran liegt das?</p>
</blockquote>
<p>Wie wäre es wenn du die Fehlermeldung auch angeben würdest, oder sollen wir ins blaue raten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535304</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 25 Jun 2008 08:02:18 GMT</pubDate></item><item><title><![CDATA[Reply to Debug fehler on Wed, 25 Jun 2008 08:24:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// Defintion der Operator-Überladung  
   String operator+=( const String&amp; str1 ) {
      // tmp gleich mit aktuellen Objekt initialisieren
      String tmp(*this);
      // Aktuelles Objekt löschen
      delete [] buffer;
      // Gesamtlänge beider Objekte ermitteln
      len = tmp.len + str1.len;
      // Speicher reservieren
      buffer = new char[len];
      // linker Operand in buffer kopieren
      strcpy( buffer, tmp.buffer );
      // rechten Operand anhängen
      strcat( buffer, str1.buffer );
      // Zurück und fertig
      return buffer; /
   }
</code></pre>
<p>solltest dieser operator nicht</p>
<pre><code class="language-cpp">return *this;
</code></pre>
<p>zurückgeben, und eine referenz von this liefern</p>
<pre><code class="language-cpp">String &amp;operator+=( const String&amp; str1 )
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1535310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535310</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Wed, 25 Jun 2008 08:24:55 GMT</pubDate></item><item><title><![CDATA[Reply to Debug fehler on Wed, 25 Jun 2008 08:24:18 GMT]]></title><description><![CDATA[<p>Im operator+= fehlt beim new das +1.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535314</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 25 Jun 2008 08:24:18 GMT</pubDate></item><item><title><![CDATA[Reply to Debug fehler on Wed, 25 Jun 2008 09:33:18 GMT]]></title><description><![CDATA[<p>Exceptionsicher ist der Operator auch nicht. Wenn</p>
<pre><code class="language-cpp">buffer = new char[len];
</code></pre>
<p>fehlschlägt verbleibt das Objekt im undefinierten Zustand.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535367</guid><dc:creator><![CDATA[Braunstein (off)]]></dc:creator><pubDate>Wed, 25 Jun 2008 09:33:18 GMT</pubDate></item><item><title><![CDATA[Reply to Debug fehler on Wed, 25 Jun 2008 10:59:59 GMT]]></title><description><![CDATA[<p>Braunstein (off) schrieb:</p>
<blockquote>
<p>Exceptionsicher ist der Operator auch nicht. Wenn</p>
<pre><code class="language-cpp">buffer = new char[len];
</code></pre>
<p>fehlschlägt verbleibt das Objekt im undefinierten Zustand.</p>
</blockquote>
<p>Zudem ist es nicht sicher vor Selbstzuweisung (a+=a) - wenn die Exceptionsicherheit hergestellt wird, dürfte dieses Problem allerdings automatisch mitgelöst werden.<br />
Grundregel: gibt niemals Resourcen frei, die noch gebraucht werden könnten oder nicht sicher alias-frei sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535453</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 25 Jun 2008 10:59:59 GMT</pubDate></item></channel></rss>