<?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[Fehler beim Beenden des Programmes]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich bekomme immer folgende Fehlermeldung, wenn sich das Programm beendet:</p>
<blockquote>
<p>Unhandled exception at 0x7c928fea in Kniffel.exe: 0xC0000005: Access violation writing location 0x00000010.</p>
</blockquote>
<p>Hier mal der Quellcode:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;

#pragma comment(lib,&quot;sdlmain.lib&quot;)
#pragma comment(lib,&quot;sdl.lib&quot;)
#pragma comment(lib,&quot;SDL_ttf.lib&quot;)
#pragma comment(lib,&quot;SDL_mixer.lib&quot;)

#include &quot;Logfile.h&quot;
#include &quot;Framework.h&quot;
#include &quot;Game.h&quot;

int _tmain(int argc, _TCHAR* argv[])
{
	/*Logfile::Get()-&gt;CreateLogfile();
	SDL::Framework::Get()-&gt;Init(1024,768,16,false,true);
	srand((unsigned)time(NULL));

	Game ga;
	ga.Init(1);
	ga.Run();
	ga.Quit();

	SDL::Framework::Get()-&gt;Quit();
	SDL::Framework::Get()-&gt;Del();
	Logfile::Get()-&gt;Del();*/
	return 0;
}
</code></pre>
<p>Erst dachte ich, dass es an meinem Zeugs liegt, da aber alles auskommentiert ist, weiß ich nicht recht, was er will. Im Callstack steht auch nichts, was mir helfen würde:</p>
<blockquote>
<p>ntdll.dll!7c928fea()<br />
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]<br />
ntdll.dll!7c9206eb()<br />
msvcrt.dll!77bfc3c9()<br />
msvcrt.dll!77bfc3ce()<br />
ntdll.dll!7c91104b()<br />
&gt; msvcr80.dll!_lock_file(_iobuf * pf=0x10310bf0) Line 238 C<br />
msvcr80.dll!fclose(_iobuf * stream=0x10310bf0) Line 55 + 0x6 bytes C<br />
Kniffel.exe!_main() + 0x1b5 bytes C<br />
msvcr80.dll!doexit(int code=0, int quick=0, int retcaller=0) Line 553 C<br />
msvcr80.dll!exit(int code=0) Line 398 + 0xd bytes C<br />
Kniffel.exe!_main() + 0xe4 bytes C<br />
Kniffel.exe!__tmainCRTStartup() Line 586 + 0x17 bytes C<br />
kernel32.dll!7c816d4f()<br />
kernel32.dll!7c8399f3()</p>
</blockquote>
<p>Vielleicht wißt Ihr ja mehr.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149146/fehler-beim-beenden-des-programmes</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 07:40:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149146.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Jun 2006 19:12:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Fri, 02 Jun 2006 19:12:42 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich bekomme immer folgende Fehlermeldung, wenn sich das Programm beendet:</p>
<blockquote>
<p>Unhandled exception at 0x7c928fea in Kniffel.exe: 0xC0000005: Access violation writing location 0x00000010.</p>
</blockquote>
<p>Hier mal der Quellcode:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;

#pragma comment(lib,&quot;sdlmain.lib&quot;)
#pragma comment(lib,&quot;sdl.lib&quot;)
#pragma comment(lib,&quot;SDL_ttf.lib&quot;)
#pragma comment(lib,&quot;SDL_mixer.lib&quot;)

#include &quot;Logfile.h&quot;
#include &quot;Framework.h&quot;
#include &quot;Game.h&quot;

int _tmain(int argc, _TCHAR* argv[])
{
	/*Logfile::Get()-&gt;CreateLogfile();
	SDL::Framework::Get()-&gt;Init(1024,768,16,false,true);
	srand((unsigned)time(NULL));

	Game ga;
	ga.Init(1);
	ga.Run();
	ga.Quit();

	SDL::Framework::Get()-&gt;Quit();
	SDL::Framework::Get()-&gt;Del();
	Logfile::Get()-&gt;Del();*/
	return 0;
}
</code></pre>
<p>Erst dachte ich, dass es an meinem Zeugs liegt, da aber alles auskommentiert ist, weiß ich nicht recht, was er will. Im Callstack steht auch nichts, was mir helfen würde:</p>
<blockquote>
<p>ntdll.dll!7c928fea()<br />
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]<br />
ntdll.dll!7c9206eb()<br />
msvcrt.dll!77bfc3c9()<br />
msvcrt.dll!77bfc3ce()<br />
ntdll.dll!7c91104b()<br />
&gt; msvcr80.dll!_lock_file(_iobuf * pf=0x10310bf0) Line 238 C<br />
msvcr80.dll!fclose(_iobuf * stream=0x10310bf0) Line 55 + 0x6 bytes C<br />
Kniffel.exe!_main() + 0x1b5 bytes C<br />
msvcr80.dll!doexit(int code=0, int quick=0, int retcaller=0) Line 553 C<br />
msvcr80.dll!exit(int code=0) Line 398 + 0xd bytes C<br />
Kniffel.exe!_main() + 0xe4 bytes C<br />
Kniffel.exe!__tmainCRTStartup() Line 586 + 0x17 bytes C<br />
kernel32.dll!7c816d4f()<br />
kernel32.dll!7c8399f3()</p>
</blockquote>
<p>Vielleicht wißt Ihr ja mehr.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070320</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 02 Jun 2006 19:12:42 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Fri, 02 Jun 2006 19:24:13 GMT]]></title><description><![CDATA[<p>Wie sehen denn die Header aus? Vielleicht gibts ein statisches Objekt, dessen Destruktor den Quatsch macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070335</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Fri, 02 Jun 2006 19:24:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sat, 03 Jun 2006 07:38:51 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Also wenn ich die Header auch rauskommentiere, dann verschwindet die Fehlermeldung.</p>
<p>Header - Logfile:</p>
<pre><code class="language-cpp">#pragma once

#define _CRT_SECURE_NO_DEPRECATE 1

#include &lt;Windows.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &quot;Singleton-Header.h&quot;
#include &lt;sstream&gt;

//Defines
#define MAX_BUFFER 1024
#define L_FAIL false
#define L_OK true

template&lt;class X&gt;
std::string ConvertToString(X p_X)
{
	std::ostringstream strTemp;
	strTemp&lt;&lt;p_X;
	return strTemp.str();
}

//Farben für den Text
enum FONTCOLORS
{
BLACK,
RED,
GREEN,
BLUE,
PURPLE
};

class Logfile : public TSingleton&lt;Logfile&gt;
{
	public:
		Logfile();																		//Construktor
		~Logfile();																	//Destructor
		void CreateLogfile  ();															//erstellt Logfile mit festgelgten Namen
		void CreateLogfile	(const char* p_pchLogname);									//erstellt Logfile mit übergebenen Namen
		void WriteTopic		(const char* p_pchTopic, int p_iSize);						//schreibt Überschrift ins Logfile
		void TextOut		(const char* p_pchText);									//schreibt Text ins Logfile
		void TextOut		(const std::string&amp; p_strText);								//schreibt String ins Logfile
		void TextOut		(int p_iColor, const char* p_pchText);						//schreibt farbigen Text ins Logfile
		void TextOut		(int p_iColor, const std::string&amp; p_strText);				//schreibt farbigen String ins Logfile
		void TextOut		(int p_iColor, bool p_bList, const char* p_pchText);		//schreibt farbigen Text in Liste ins Logfile
		void TextOut		(int p_iColor, bool p_bList, const std::string&amp; p_strText);	//schreibt farbigen String in Liste ins Logfile
		void fTextOut		(const char* p_pchText,...);								//schreibt formatierten Text ins Logfile
		void fTextOut		(int p_iColor, const char* p_pchText,...);					//schreibt formatierten farbigen Text ins Logfile
		void fTextOut		(int p_iColor, bool p_bList, const char* p_pchText,...);	//schreibt formatierten farbigen Text in Liste ins Logfile
		void FunctionResult	(const char* p_pchName, bool p_bResult);					//schreibt Funktionsname und Ergebnis in Liste ins Logfile 
		void FunctionResult (const std::string&amp; p_strName, bool p_bResult);				//schreibt Funktionsstring und Ergebins in Liste ins LOgfile

private:
	FILE* m_pLogfile; 

};
</code></pre>
<p>Header - Framework:</p>
<pre><code class="language-cpp">#pragma once

#include &quot;Logfile.h&quot;
#include &quot;Timer.h&quot;
#include &lt;ctime&gt;
#include &lt;SDL_ttf.h&gt;

namespace SDL
{
	class Framework : public TSingleton&lt;Framework&gt;
	{
	public:
		Framework(void);
		~Framework(void);
		bool Init(void);																								// Initialisiert SDL mit default Werten
		bool Init(int p_iScreenWidth, int p_iScreenHeight, int p_iColorDepth, bool p_bFullScreen, bool p_bInitFonts);	// dient zur Initialisierung von SDL
		void Quit(void);																								// dient zur Beendigung von SDL
		void Update(void);																								// Timer- und Keyboardstatus updaten
		void Clear(void);																								// Buffer löschen
		void Flip(void);																								// Screens wechseln
		bool KeyDown(int iKey_ID);																						// prüft, on angegebene Taste gedrückt ist
		SDL_Surface* GetScreen(void) {return m_pScreen;}	// gibt Zeiger auf SDL_Surface zurück
		int GetScreenWidth(void) {return m_iScreenWidth;}
		int GetScreenHeight(void) {return m_iScreenHeight;}
		int GetColorDepth(void) {return m_iColorDepth;}

	private:
		SDL_Surface* m_pScreen;				// Surface für den Screen
		Uint8* m_pKeyState;					// Array für aktuellen Tastaturstatus
		int m_iScreenHeight;
		int m_iScreenWidth;
		bool m_bIsFullScreen;
		int m_iColorDepth;
	};
}
</code></pre>
<p>vielleicht liegt es ja auch am Singleton:</p>
<pre><code class="language-cpp">#ifndef TSINGLETON
#define TSINGLETON

template&lt;typename T&gt;
class TSingleton
{
	protected:
		//Membervariable
		static T* m_pSingleton;

	public:
		//Memberfunktionen
		//Destruktor

		virtual ~TSingleton()
		{
		}

		//Get()  Aufgabe:
		//statisches Object erzeugen und Zeiger darauf zurückgeben
		inline static T* Get()
		{
			if(!m_pSingleton)
				m_pSingleton = new T;
			return(m_pSingleton);
		}

		//Del()  Aufgabe:
		//statisches Object freigeben (vom Heap löschen)
		static void Del()
		{
			if(m_pSingleton)
			{
				delete m_pSingleton;
				m_pSingleton = NULL;
			}
		}
};

//die statische Membervariale erzeugen
template&lt;typename T&gt;
T* TSingleton&lt;T&gt;::m_pSingleton = 0;

#endif
</code></pre>
<p>Sorry, für den vielen Code und danke für die Antworten.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070554</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 03 Jun 2006 07:38:51 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sat, 03 Jun 2006 09:58:32 GMT]]></title><description><![CDATA[<p>Setz doch mal Haltepunkte in die ganzen Singleton-Destruktoren (wo wird dieses Del von TSingleton eigentlich aufgerufen?) - irgendwo da wird's krachen (was anderes wird ja nach main auch nicht mehr ausgeführt <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/1070589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070589</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 03 Jun 2006 09:58:32 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sat, 03 Jun 2006 10:11:07 GMT]]></title><description><![CDATA[<p>Warum wird der Destruktor überhaupt ausgeführt?<br />
Dafür müsste doch irgendwo erstmal nen Exemplar von Logfile(oder irgendner anderen Klasse die TSingleton nutzt) erstellt werden. <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="😕"
    /></p>
<p>PS:Schonmal das Projekt bereinigt und komplett neu erstellt?</p>
<p>MfG Spacelord</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070593</guid><dc:creator><![CDATA[Spacelord]]></dc:creator><pubDate>Sat, 03 Jun 2006 10:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sat, 03 Jun 2006 10:24:34 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Spacelord schrieb:</p>
<blockquote>
<p>Warum wird der Destruktor überhaupt ausgeführt?<br />
Dafür müsste doch irgendwo erstmal nen Exemplar von Logfile(oder irgendner anderen Klasse die TSingleton nutzt) erstellt werden. <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="😕"
    /></p>
<p>PS:Schonmal das Projekt bereinigt und komplett neu erstellt?</p>
<p>MfG Spacelord</p>
</blockquote>
<p>Das habe ich mich auch gefragt. Es wird doch gar kein Objekt erstellt. Ich habe auf Rebuild geklickt, aber kommt immer noch derselbe Fehler. Wie gesagt, passiert dies nur, wenn ich die beiden Header eingebunden habe.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070597</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 03 Jun 2006 10:24:34 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sat, 03 Jun 2006 11:34:00 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich wollte mal als Zusatzinfo noch zeigen, wo ich immer lande, nachdem er mir den Fehler zeigt. Un dzwar in der Datei: _file.c und in folgendem Code:</p>
<pre><code class="language-cpp">void __cdecl _lock_file (
        FILE *pf
        )
{
        /*
         * The way the FILE (pointed to by pf) is locked depends on whether
         * it is part of _iob[] or not
         */
        if ( (pf &gt;= _iob) &amp;&amp; (pf &lt;= (&amp;_iob[_IOB_ENTRIES-1])) )
            /*
             * FILE lies in _iob[] so the lock lies in _locktable[].
             */
            _lock( _STREAM_LOCKS + (int)(pf - _iob) );
        else
            /*
             * Not part of _iob[]. Therefore, *pf is a _FILEX and the
             * lock field of the struct is an initialized critical
             * section.
             */
            EnterCriticalSection( &amp;(((_FILEX *)pf)-&gt;lock) );
}
</code></pre>
<p>Vielleicht kann mir ja damit jemand helfen.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070617</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 03 Jun 2006 11:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sat, 03 Jun 2006 21:28:41 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Hat keiner mehr eine Idee? Ich würde mich worklich über Anregungen aller Art freunen. Fehlt es an Informationen von mir, oder wisst ihr auch keine Lösung?</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070940</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 03 Jun 2006 21:28:41 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sat, 03 Jun 2006 21:34:52 GMT]]></title><description><![CDATA[<p>Bau ein minimales Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070941</guid><dc:creator><![CDATA[.............]]></dc:creator><pubDate>Sat, 03 Jun 2006 21:34:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sat, 03 Jun 2006 21:35:53 GMT]]></title><description><![CDATA[<p>Naheliegendeste Lösung: Erst mal feststellen, welche der drei include-Anweisungen Ärger macht. Der Reihe nach alle bis auf einen auskommentieren. Das sollte das Problem zumindest eingrenzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070942</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sat, 03 Jun 2006 21:35:53 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sat, 03 Jun 2006 21:36:50 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>............. schrieb:</p>
<blockquote>
<p>Bau ein minimales Beispiel.</p>
</blockquote>
<p>Weniger als im ersten Post geht kaum. Da werden ja nur drei Header eingebunden und das war's.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070943</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 03 Jun 2006 21:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sun, 04 Jun 2006 05:47:40 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Z2 schrieb:</p>
<blockquote>
<p>Naheliegendeste Lösung: Erst mal feststellen, welche der drei include-Anweisungen Ärger macht. Der Reihe nach alle bis auf einen auskommentieren. Das sollte das Problem zumindest eingrenzen.</p>
</blockquote>
<p>Das geht leider schlecht, weil es im Grunde reichen würde Game.h einzubinden. Dieser Header bindet Framwork.h ein und dieser wiederum bindet Logfile.h ein. Ich habe sie nur extra eingebunden, weil ich das in dem Fall übersichtlicher fand.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1070974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1070974</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 04 Jun 2006 05:47:40 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sun, 04 Jun 2006 10:07:16 GMT]]></title><description><![CDATA[<p>Stellt sich erst mal die Frage, ob es wirklich nötig ist die anderen Header in Game.h einzubinden. Du könntest immerhin noch versuchen nur Game.h bzw. nur Game.h und Framework.h auszukommentieren. Wenn es beide Mal zu keinem Fehler kommt, liegt der Fehler mit hoher Wahrscheinlichkeit in Game.h (die du uns übrigens bis jetzt verschwiegen hast, wenn ich das richtig sehe).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071038</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sun, 04 Jun 2006 10:07:16 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sun, 04 Jun 2006 11:41:33 GMT]]></title><description><![CDATA[<p>Führ das Programm doch mal im Single-Step aus und geh jede Zeile im Assemblercode durch, dann dürft schnell klar werden was tatsächlich ausgeführt wird und was nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071091</guid><dc:creator><![CDATA[dragon90#]]></dc:creator><pubDate>Sun, 04 Jun 2006 11:41:33 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Sun, 04 Jun 2006 20:47:29 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Z2 schrieb:</p>
<blockquote>
<p>Stellt sich erst mal die Frage, ob es wirklich nötig ist die anderen Header in Game.h einzubinden. Du könntest immerhin noch versuchen nur Game.h bzw. nur Game.h und Framework.h auszukommentieren. Wenn es beide Mal zu keinem Fehler kommt, liegt der Fehler mit hoher Wahrscheinlichkeit in Game.h (die du uns übrigens bis jetzt verschwiegen hast, wenn ich das richtig sehe).</p>
</blockquote>
<p>Also ich brauche in Game auf jeden Fall Framework.h und Framework braucht Logfile.h<br />
Hier mal Game.h und Game.cpp:</p>
<pre><code class="language-cpp">#pragma once

#include &quot;GameStateWithMouse.h&quot;
#include &quot;Text.h&quot;
#include &quot;Framework.h&quot;
#include &quot;Sprite.h&quot;
#include &quot;Cube.h&quot;
#include &quot;boost/lexical_cast.hpp&quot;
#include &lt;vector&gt;

class Game : public SDL::GameStateWithMouse
{
public:
	Game(void);
	~Game(void);
	void Init(int Start);
	void Run(void);
	int Quit(void);

protected:
	std::vector&lt;Cube&gt; Cubes;
	int WhichMouseButton;
	SDL::Sprite Mouse;
	SDL::Text OPText;
	void Render(void);
	void Move(void);
};
</code></pre>
<pre><code class="language-cpp">#include &quot;Game.h&quot;
#include &quot;Timer.h&quot;

using boost::lexical_cast;

Game::Game(void)
{
	Cubes.resize(5);
}

Game::~Game(void)
{
}

void Game::Init(int Start)
{
	SDL_ShowCursor(SDL_DISABLE);
	Mouse.Load(&quot;Mouse/MouseCursor.bmp&quot;);
	OPText.Init(&quot;fonts/FreeSansBold.ttf&quot;,22);
	m_bGameRun = true;
	for(int i=0; i&lt;5; ++i)
		Cubes[i].Init(50 + i*185,50);

}

void Game::Run(void)
{
	while(m_bGameRun)
	{
		SDL::Framework::Get()-&gt;Clear();
		SDL::Framework::Get()-&gt;Update();
		ProcessEvents(&amp;WhichMouseButton);
		Move();
		Render();
		SDL::Framework::Get()-&gt;Flip();
	}
}

int Game::Quit(void)
{
	OPText.Quit();
	return 1;
}

void Game::Move(void)
{
	Mouse.SetPos(static_cast&lt;float&gt;(m_iMousePosX),static_cast&lt;float&gt;(m_iMousePosY));
}

void Game::Render(void)
{
	OPText.Render(&quot;Hallo&quot;);
	for(unsigned int i=0; i&lt;5; ++i)
		Cubes[i].Render();
	Mouse.Render();
}
</code></pre>
<p>Ich hoffe, dass das weiterhilft. Ich bin wirklich etwas verzweifelt. Ich würde das Projekt auch mal jemand schicken, damit er es mal bei sich probieren kann.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071369</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 04 Jun 2006 20:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 00:03:41 GMT]]></title><description><![CDATA[<p>Ich sehe jetzt nicht, wo in Game.h irgendetwas aus Framework.h benötigt würde (dito für Framework.h und Logfile.h).</p>
<p>Der Tip mit dem Single Step durchlauf ist sicher nicht schlecht. Irgendwo geht irgendetwas bei der Destruktion irgendeines Objektes schief und du wirst nicht darum herumkommen herauszufinden, von welcher Klasse dieses Objekt ist. Aus den Headern, die du uns bisher gezeigt hast, läßt sich erstmal nichts weiter erkennen (aber du includierst in diesen Headern ja noch andere Header).</p>
<p>Nebenbei bemerkt, deine Singleton-Klasse taugt nichts (hab sie mir gerade zum ersten Mal richtig angesehen). Schau dir das am besten noch mal genau an. Der öffentlich zugängliche Desktruktor der Singleton-Klasse und der abgeleiteten Klassen sind ein Problem. Und wenn wir schon mal dabei sind, der öffentlich zugängliche Konstruktor der Singleton-Klasse ist auch nicht gerade schön (ich trau mich kaum den öffentlich zugänglichen Copy-Konstruktor zu erwähnen <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="😉"
    /> ). Instinktiv würde ich mal vermuten, daß die Ursache für dein Problem da irgendwo zu suchen ist (ist aber bloß geraten, Fehler könnte auch an jeder beliebigen anderen Stelle liegen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071434</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Mon, 05 Jun 2006 00:03:41 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 09:29:02 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe es nun mal mit einem anderem Singleton probiert. Nur leider habe ich davon keine Ahnung und nun sieht es so aus:</p>
<p>Singleton.h:</p>
<pre><code class="language-cpp">#pragma once

template&lt;class X&gt;
class TSingleton
{
private:
	TSingleton() {};
	TSingleton(const TSingleton&amp;) {};
	virtual ~TSingleton();
	TSingleton&amp; operator=(const TSingleton&amp;);

	static X* Singleton;

public:
	static X* Get(void)
	{
		if(!Singleton)
			Singleton = new X;
		return Singleton;
	}
};

template&lt;class X&gt;
X* TSingleton&lt;X&gt;::Singleton = 0;
</code></pre>
<p>Nur bekomme ich jetzt bei den abgeleiteten Klassen immer Fehlermeldung in deren C'tor und D'tor, weil diese nicht privat Member zugreifen können:</p>
<blockquote>
<p>Error 1 error C2248: 'TSingleton&lt;X&gt;::TSingleton' : cannot access private member declared in class 'TSingleton&lt;X&gt;'</p>
</blockquote>
<blockquote>
<p>Error 2 error C2248: 'TSingleton&lt;X&gt;::~TSingleton' : cannot access private member declared in class 'TSingleton&lt;X&gt;'</p>
</blockquote>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071489</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 05 Jun 2006 09:29:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 09:34:14 GMT]]></title><description><![CDATA[<p>@chrische<br />
Du solltest in deinen Headern (und auch ÜE!) erstmal die Stellen suchen, wo globale Instanzierungen erfolgen. Also all das, was noch vor main geschieht. Ansonsten können wir mit deinem geposteten Code nicht viel anfangen. Die Fehlermeldungen deutet jedenfalls auf einen dereferenzierten Nullzeiger hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071493</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Mon, 05 Jun 2006 09:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 09:54:30 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>groovemaster schrieb:</p>
<blockquote>
<p>@chrische<br />
Du solltest in deinen Headern (und auch ÜE!) erstmal die Stellen suchen, wo globale Instanzierungen erfolgen. Also all das, was noch vor main geschieht. Ansonsten können wir mit deinem geposteten Code nicht viel anfangen. Die Fehlermeldungen deutet jedenfalls auf einen dereferenzierten Nullzeiger hin.</p>
</blockquote>
<p>Das würde ich sehr gerne machen, wenn di mir erklären könntest, was das ist und wie ich es finde.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071507</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 05 Jun 2006 09:54:30 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 10:13:42 GMT]]></title><description><![CDATA[<p>Was meinst du mit &quot;was das ist&quot;? Verstehst du nicht, was globale Instanzierungen sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071516</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Mon, 05 Jun 2006 10:13:42 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 10:17:43 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>groovemaster schrieb:</p>
<blockquote>
<p>Was meinst du mit &quot;was das ist&quot;? Verstehst du nicht, was globale Instanzierungen sind?</p>
</blockquote>
<p>Wenn ich ehrlich bin, dann muss ich diese Frage mit &quot;ja&quot; beantworten.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071517</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 05 Jun 2006 10:17:43 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 13:23:56 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Kann mir mal bitte jemand erklären, was globale Instanzierung sind, weil ich dann an meinem Problem weiter arbeiten könnte.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071627</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 05 Jun 2006 13:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 13:54:44 GMT]]></title><description><![CDATA[<p>Ohne jetzt zu sehr ins Detail zu gehen, dein Problem wird von einem Objekt verursacht, das vor Beginn der Ausführung von main() konstruiert und nach Ende der Ausführung von main() destruiert wird (anders wäre es ja wohl auch kaum möglich, da in deinem Testfall deine main-Funktion leer ist).</p>
<p>Debugger ist eine Möglichkeit da ranzugehen. Eine andere wäre die Suche im Quelltext. Du könntest versuchen alle deine Quelltext-Dateien nach dem Schlüsselwort static zu durchsuchen (dein Editor/deine IDE sollte eigentlich eine Funktion für projektweite Suche haben). Aus der erhaltenen Liste schmeißt du alle Funktionen und alle Zeiger raus. Unter den übrig gebliebenen Funden sollte sich der Übeltäter befinden, vorausgesetzt du verwendest keine globalen Variablen (und wenn du globale Variablen verwendest, dann verdienst du es, daß du den Fehler nicht finden kannst; globale Variablen sind nämlich böse <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>P.S.: Deine zweite Singleton-Klasse ist noch schlimmer als die erste. Vielleicht sollte man ein Design Pattern erst mal verstehen, bevor man es benutzt ...?</p>
<p>Edit: Rechtschreibung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071650</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Mon, 05 Jun 2006 13:54:44 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 14:01:40 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Erstmal danke für die Hilfe. Ich habe nun gesucht und drei mal static gefunden. Alle in dem Singleton-Header:</p>
<pre><code class="language-cpp">static T* m_pSingleton;
</code></pre>
<pre><code class="language-cpp">inline static T* Get()
		{
			if(!m_pSingleton)
				m_pSingleton = new T;
			return(m_pSingleton);
		}
</code></pre>
<pre><code class="language-cpp">static void Del()
		{
			if(m_pSingleton)
			{
				delete m_pSingleton;
				m_pSingleton = NULL;
			}
</code></pre>
<p>Ich weiß aber ehrlich nicht, was ich jetzt damit anfagen soll. Ich benutze keine globale Variablen. Die erste Singletonklasse habe ich aus einem Buch 1 zu 1 übernommen und bei der zweiten habe ich versucht deine Vorschläge einfliessen zu lassen, aber ich kenne mich halt nicht damit aus. Kennst du einen guten Link für template Singleton-Klassen. Ich verwende diese auch nur, weil ich es eben praktisch finde. Ich versteh ja auch nicht genau, was hinter den Kulissen von std::string los ist (habe ich mir noch nie angeschaut) und trotzdem verwende ich es.</p>
<p>Vielen Dank für deine Hilfe. Vielleicht klappt es ja am Ende doch noch.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071659</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 05 Jun 2006 14:01:40 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 15:51:24 GMT]]></title><description><![CDATA[<p>Hm, sieht mir nicht danach aus als ob wir hier schon fündig geworden sind. Sicher, daß du wirklich alle Quelltextdatein überprüft hast? (sowohl h als auch cpp)</p>
<p>Was Singletons angeht, habe ich leider keinen Link zur Hand. Sorry.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071743</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Mon, 05 Jun 2006 15:51:24 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Beenden des Programmes on Mon, 05 Jun 2006 16:17:45 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe jetzt noch einmla geschaut und es sind wriklich nur diese drei Stellen, an denen mit static gearbeitet wird. Ich schicke dir auch gerne mal das Projekt (natürlich nur, wenn es was hilft und du Lust hast es dir mal anzuschauen)</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1071761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1071761</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 05 Jun 2006 16:17:45 GMT</pubDate></item></channel></rss>