<?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[AccessViolationException bei return vin klassen instanz]]></title><description><![CDATA[<p>Hey,<br />
bin recht neu in c++ und wollte mir jetzt einfach mal zum üben eine eigene string klasse schreiben jetzt gebe ich von der funktion test eine neue instanz der klasse zurück wobei es<br />
im DEBUG modus eine AccessViolationException gibt<br />
aber im RELEASE modus keinen fehler gibt hier der code:</p>
<pre><code class="language-cpp">class TEST
{
private:
	char* pDaten;
	int iLength;
public:
	TEST()
	{
		pDaten = new char[1];
		pDaten[0] = '\0';
	}
	TEST(const char* val)
	{
		iLength = strlen(val);
		pDaten = new char[iLength + 1];
		for(int i = 0;i &lt; iLength;i++)
			pDaten[i] = val[i];
		pDaten[iLength] = '\0';
	}
	~TEST()
	{
		delete[] pDaten;
	}

	void operator=(TEST&amp; rhs)
	{
		iLength = strlen(rhs.pDaten);
		delete[] pDaten;
		pDaten = new char[iLength + 1];
		for(int i = 0;i &lt; iLength;i++)
			pDaten[i] = rhs.pDaten[i];
		pDaten[iLength] = '\0';
	}
	void print() const
	{
		cout &lt;&lt; pDaten &lt;&lt; endl;
	}
	TEST test()
	{
		TEST result(&quot;test&quot;);
		return result;
	}
};

int main(int argc, char* argv[])
{
	TEST a = &quot;---&quot;;
	TEST b = a.test();
	b.print();

	while(1);
	return 1;
}
</code></pre>
<p>hoffe ihr findet einen fehler<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242361/accessviolationexception-bei-return-vin-klassen-instanz</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 01:04:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242361.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 Jun 2009 22:23:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to AccessViolationException bei return vin klassen instanz on Tue, 02 Jun 2009 22:23:17 GMT]]></title><description><![CDATA[<p>Hey,<br />
bin recht neu in c++ und wollte mir jetzt einfach mal zum üben eine eigene string klasse schreiben jetzt gebe ich von der funktion test eine neue instanz der klasse zurück wobei es<br />
im DEBUG modus eine AccessViolationException gibt<br />
aber im RELEASE modus keinen fehler gibt hier der code:</p>
<pre><code class="language-cpp">class TEST
{
private:
	char* pDaten;
	int iLength;
public:
	TEST()
	{
		pDaten = new char[1];
		pDaten[0] = '\0';
	}
	TEST(const char* val)
	{
		iLength = strlen(val);
		pDaten = new char[iLength + 1];
		for(int i = 0;i &lt; iLength;i++)
			pDaten[i] = val[i];
		pDaten[iLength] = '\0';
	}
	~TEST()
	{
		delete[] pDaten;
	}

	void operator=(TEST&amp; rhs)
	{
		iLength = strlen(rhs.pDaten);
		delete[] pDaten;
		pDaten = new char[iLength + 1];
		for(int i = 0;i &lt; iLength;i++)
			pDaten[i] = rhs.pDaten[i];
		pDaten[iLength] = '\0';
	}
	void print() const
	{
		cout &lt;&lt; pDaten &lt;&lt; endl;
	}
	TEST test()
	{
		TEST result(&quot;test&quot;);
		return result;
	}
};

int main(int argc, char* argv[])
{
	TEST a = &quot;---&quot;;
	TEST b = a.test();
	b.print();

	while(1);
	return 1;
}
</code></pre>
<p>hoffe ihr findet einen fehler<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720025</guid><dc:creator><![CDATA[cppsnare]]></dc:creator><pubDate>Tue, 02 Jun 2009 22:23:17 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolationException bei return vin klassen instanz on Tue, 02 Jun 2009 22:37:36 GMT]]></title><description><![CDATA[<p>Die Implementation eines Kopierkonstruktors wäre sehr sinnvoll. Sonst wird einfach nur der Zeiger und die Länge kopiert. Im alten Objekt wird das Array gelöscht und der Zeiger im neuen Objekt zeigt auf ungültigen Speicher.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720031</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 02 Jun 2009 22:37:36 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolationException bei return vin klassen instanz on Tue, 02 Jun 2009 22:56:43 GMT]]></title><description><![CDATA[<p>aubacke stimmt <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="🙂"
    /> hab da mal wieder was durcheinander gebracht<br />
aber werds direkt fixen<br />
danke nochmals<br />
bye</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720038</guid><dc:creator><![CDATA[cppsnare]]></dc:creator><pubDate>Tue, 02 Jun 2009 22:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolationException bei return vin klassen instanz on Tue, 02 Jun 2009 23:21:26 GMT]]></title><description><![CDATA[<p>Du solltest auch schauen, dass du alle Member initialisierst. Am besten in der Konstruktor-Initialisierungsliste. Beim Standardkonstruktor hast du zum Beispiel <code>iLength</code> vergessen... <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>Ausserdem würde ich beim Zuweisungsoperator (und dann auch beim Kopierkonstruktor) einen Parameter als Referenz auf konstantes Objekt (Const-Reference) nehmen. Also <code>const TEST&amp; rhs</code> statt <code>TEST&amp; rhs</code> .</p>
<p>Ach ja, und was willst du mit <code>while (1)</code> ? Um die Konsole offen zu halten, gibt es bessere Methoden. Versuchs mal mit <code>cin.get();</code> oder schaue in den FAQ nach...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720047</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 02 Jun 2009 23:21:26 GMT</pubDate></item></channel></rss>