<?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[Fehlerbehandlung in C++]]></title><description><![CDATA[<p>Hallo,<br />
1.<br />
ich habe aktuell das Problem,<br />
das mein Programm trotz das ein Fehler festgestellt wurde einfach fortläuft.<br />
Habe eigentlich gedacht, das ich mithilfe von return; aus der Funktion herausspringen könnte?</p>
<p>Wie kann ich also wenn ich &quot;manuell&quot; erzwingen möchte das eine Funktion vorzeitig beendet wird dies bewerkstelligen?</p>
<ol start="2">
<li></li>
</ol>
<p>Zudem möchte ich gerne einmal mein Programm testen ob es wirklich Funktioniert, da ich beim Debuggen stets</p>
<blockquote>
<p>warning: HEAP[Programm.exe]:<br />
warning: Invalid Address specified to RtlFreeHeap( 003D0000, 10063920 )</p>
<p>Cannot access memory at address 0x0</p>
</blockquote>
<p>Beim Aufruf der Main-Methode erhalte, jedoch dennoch das Programm startet &amp; funktioniert.</p>
<p>Gruß jens</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231268/fehlerbehandlung-in-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 22:43:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231268.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Jan 2009 10:00:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlerbehandlung in C++ on Thu, 08 Jan 2009 10:00:17 GMT]]></title><description><![CDATA[<p>Hallo,<br />
1.<br />
ich habe aktuell das Problem,<br />
das mein Programm trotz das ein Fehler festgestellt wurde einfach fortläuft.<br />
Habe eigentlich gedacht, das ich mithilfe von return; aus der Funktion herausspringen könnte?</p>
<p>Wie kann ich also wenn ich &quot;manuell&quot; erzwingen möchte das eine Funktion vorzeitig beendet wird dies bewerkstelligen?</p>
<ol start="2">
<li></li>
</ol>
<p>Zudem möchte ich gerne einmal mein Programm testen ob es wirklich Funktioniert, da ich beim Debuggen stets</p>
<blockquote>
<p>warning: HEAP[Programm.exe]:<br />
warning: Invalid Address specified to RtlFreeHeap( 003D0000, 10063920 )</p>
<p>Cannot access memory at address 0x0</p>
</blockquote>
<p>Beim Aufruf der Main-Methode erhalte, jedoch dennoch das Programm startet &amp; funktioniert.</p>
<p>Gruß jens</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641577</guid><dc:creator><![CDATA[jensa]]></dc:creator><pubDate>Thu, 08 Jan 2009 10:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehandlung in C++ on Thu, 08 Jan 2009 10:12:58 GMT]]></title><description><![CDATA[<p>jensa schrieb:</p>
<blockquote>
<p>Hallo,<br />
1.<br />
ich habe aktuell das Problem,<br />
das mein Programm trotz das ein Fehler festgestellt wurde einfach fortläuft.<br />
Habe eigentlich gedacht, das ich mithilfe von return; aus der Funktion herausspringen könnte?</p>
</blockquote>
<p>Ja, kann man. Return beendet eine Funktion. Ich würde eher mal den Debugger verwenden um zu prüfen ob er wirklich den Fehlerfall wie erwartet behandelt.</p>
<p>Ganz davon abgesehen würde ich &quot;echte&quot; Fehler in C++ mittels Exceptions, nicht über Returnwerte behandeln. Returnwerte kann der Aufrufer auch &quot;vergessen&quot;, bei Exceptions geht dies nicht...</p>
<p>jensa schrieb:</p>
<blockquote>
<ol start="2">
<li></li>
</ol>
<p>Zudem möchte ich gerne einmal mein Programm testen ob es wirklich Funktioniert, da ich beim Debuggen stets</p>
<blockquote>
<p>warning: HEAP[Programm.exe]:<br />
warning: Invalid Address specified to RtlFreeHeap( 003D0000, 10063920 )</p>
<p>Cannot access memory at address 0x0</p>
</blockquote>
<p>Beim Aufruf der Main-Methode erhalte, jedoch dennoch das Programm startet &amp; funktioniert.</p>
</blockquote>
<p>So einen Fehler kenne ich persönlich noch nicht, mich würde interessieren ob dieser Fehler auch bei einem ganz einfachen &quot;Hello World&quot;-Programm auftritt (Wenn nein, gibt es ein Problem in deiner Anwendung, vielleicht bei einer Initialisierung einer globalen Variable).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641585</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 08 Jan 2009 10:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehandlung in C++ on Thu, 08 Jan 2009 11:24:36 GMT]]></title><description><![CDATA[<p>bzgl. 2.<br />
vmtl falsch ausgedrückt.</p>
<p>es ist wohl wahr, das es erst im &quot;startverlauf&quot; des programmierten auftritt.</p>
<pre><code class="language-cpp">#include &quot;Mainwindow.h&quot;
using namespace AbTab;

	int main( int argc, char *argv[] )
	{
		Gtk::Main main( argc, argv );
		Glib::RefPtr&lt; Gnome::Glade::Xml &gt; refXml;
		refXml = Gnome::Glade::Xml::create( &quot;../data/basic.glade&quot; );

		MainWindow* window;
		refXml-&gt;get_widget_derived( &quot;LayoutWindow&quot;, window );
		if ( window )
		{
			main.run( *window );
			delete window;
			window = 0;
		}
		else
		{
			std::cout &lt;&lt; &quot;LayoutWindow konnte nicht geladen werden&quot; &lt;&lt; std::endl;
			return 1;
		}

		return 0;
	}
</code></pre>
<p>die erste heap meldung kommt beim prüfen von if (window)</p>
<p>gruß jens</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641627</guid><dc:creator><![CDATA[jensa]]></dc:creator><pubDate>Thu, 08 Jan 2009 11:24:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehandlung in C++ on Thu, 08 Jan 2009 12:03:03 GMT]]></title><description><![CDATA[<p>Das bereinigt zwar nicht deinen Fehler (Ich kenne die verwendete Bibliothek nicht und rate jetzt auch nicht in das Blaue hinein), ich habe aber dennoch noch Anmerkungen:</p>
<p>1. Grundsätzlich würde ich Variablen immer initialisieren</p>
<pre><code class="language-cpp">MainWindow* window = 0; // IMHO besser um Fehler zu vermeiden
</code></pre>
<p>2. Lokale Variablen, die anschließend nicht mehr verwendet werden, müssen nicht explizit noch auf irgendwelche Initialwerte zurückgesetzt werden.</p>
<pre><code class="language-cpp">delete window;
window = 0; // Du verwendest window hier nicht mehr, Unnötig (aber auch kein Fehler)
</code></pre>
<p>3. Als reine Ergänzung: Ich würde Freigaben, wo möglich Automatisieren (delete kann man so leicht vergessen). Hierzu kannst du dir z.B. mal Smartpointer anschauen (z.B. aus der <a href="http://www.boost.org" rel="nofollow">Boost-Bibliothek</a>, speziell <a href="http://www.boost.org/doc/libs/1_37_0/libs/smart_ptr/smart_ptr.htm" rel="nofollow">diesen Abschnitt</a>). Gerade der scoped_ptr ist sehr Leichtgewichtig.</p>
<p>4. Ich gehe jetzt mal davon aus das &quot;refXml-&gt;get_widget_derived(&quot;LayoutWindow&quot;, window)&quot; noch irgendeinen Statuswert zurückliefert, ansonsten hätte ich erwartet, das window als Rückgabe dient. Wenn ja: Hast du diesen mal abgefragt?</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641657</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 08 Jan 2009 12:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehandlung in C++ on Thu, 08 Jan 2009 12:19:16 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ja der Rückgabewert ist vom Typ T_WIDGET sprich in meinem Beispiel dann: 0x10022548<br />
es wird eben einfach geprüft ob das Widget aus dem Glade XML File gelesen werden konnte.</p>
<p>den tipp mit dem Smartpointer werde ich für ein späteres Projekt einmal im Auge behalten.</p>
<p>Aber einen konkreten verdacht warum dort ein Heap - Fehler auftritt ist dir auch nicht klar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641668</guid><dc:creator><![CDATA[jensa]]></dc:creator><pubDate>Thu, 08 Jan 2009 12:19:16 GMT</pubDate></item></channel></rss>