<?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[Stack overflow - Hilfe]]></title><description><![CDATA[<p>Hallo!</p>
<p>Mein Autokick-Programm für Vietcong funktioniert prima, doch wenn ich es über Nacht laufen lasse und in der Früh schaue, sehe ich:</p>
<p>Visual C++ Express: Stack overflow!</p>
<p>Hier der ganze Code:</p>
<pre><code class="language-cpp">#ifndef INCLUDED_SLOWBOB
#define INCLUDED_SLOWBOB

//// &lt; I N C L U D E S &gt; /////////////////////////
#include &lt;windows.h&gt;
#include &lt;mmsystem.h&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;vector&gt;
//#include &quot;soci.h&quot;
//#include &quot;soci-mysql.h&quot;

//// &lt; C L A S S  SlowBob &gt; //////////////////////
class SlowBob
{
	HWND hWnd;
	HWND edit;
	HWND list;

	LRESULT itemCount;

	std::string windowTitle;

	TCHAR recvText[128];

	short oldJoinedPlayers;
	short joinedPlayers;
	short reggedPlayers;

	struct oldJoinedPlayer
	{
		std::string ip;
		std::string id;
	}; oldJoinedPlayer oldJoinedPlayer[64];

	struct joinedPlayer
	{
		std::string ip;
		std::string id;
	}; joinedPlayer joinedPlayer[64];

	struct reggedPlayer
	{
		std::string ip;
	}; reggedPlayer reggedPlayer[1000];

	//Session sql;

	std::vector&lt;std::string&gt; kickList;

	float current;
	float elapsed;
	float old;
public:
	SlowBob();
	~SlowBob();

	void Tick();
	void Check();
	void Kick();
	void UpdateOld();
	void Clear();

	void getItemCount();
	void sendText(std::string);
	void kickPlayer(std::string);

	void getJoinedPlayers();
	void getJoinedPlayerIds();
	void getJoinedPlayerIps();
	void getReggedPlayerIps();
};

#endif // INCLUDED_SLOWBOB
</code></pre>
<pre><code class="language-cpp">//// &lt; I N C L U D E S &gt; /////////////////////////
#include &quot;SlowBob.h&quot;

//// &lt; C L A S S  SlowBob &gt; //////////////////////
SlowBob::SlowBob()
{
	windowTitle = &quot;Vietcong v1.60 : BLACK PAJAMAS BLUE LAGUNA |FREE : 5425&quot;;

	hWnd = FindWindow(0, windowTitle.c_str());
	edit = FindWindowEx(hWnd, 0, &quot;Edit&quot;, 0);
	list = FindWindowEx(hWnd, 0, &quot;ListBox&quot;, 0);

	elapsed  = 0.0f;
	old      = 0.0f;

	oldJoinedPlayers = 0;

	Clear();
}

SlowBob::~SlowBob()
{
	;
}

void SlowBob::Tick()
{
	current  = timeGetTime() / 1000.0f;
	elapsed  += (current - old);
	old      = timeGetTime() / 1000.0f;

	if(elapsed &gt;= 5.0f)
	{
		getJoinedPlayers();
		getJoinedPlayerIds();
		getJoinedPlayerIps();
		getReggedPlayerIps();

		Check();

		if(kickList.size() &gt; 0)
			Kick();

		UpdateOld();

		elapsed = 0.0f;
	}

	Sleep(1);
}

void SlowBob::Check()
{
	for(int a = 0; a &lt; joinedPlayers; a++)
	{
		for(int b = 0; b &lt; reggedPlayers; b++)
		{
			if(!strcmp(joinedPlayer[a].ip.c_str(), reggedPlayer[b].ip.c_str()))
			{
				//if(b == (reggedPlayers - 1))
					kickList.push_back(joinedPlayer[a].id);
			}
			//else
				//b = reggedPlayers - 1;
		}
	}
}

void SlowBob::Kick()
{
	sendText(&quot;say \&quot;{SlowBob} Clearing kick list\&quot;&quot;);
	Sleep(1000);

	for(unsigned int a = 0; a &lt; kickList.size(); a++) 
		kickPlayer(kickList[a]);

	kickList.clear();
}

void SlowBob::UpdateOld()
{
	memset(&amp;oldJoinedPlayer, 0, sizeof(oldJoinedPlayer));

	for(int a = 0; a &lt; 64; a++)
	{
		oldJoinedPlayer[a].ip = joinedPlayer[a].ip;
		oldJoinedPlayer[a].id = joinedPlayer[a].id;
	}

	oldJoinedPlayers = joinedPlayers;

	memset(&amp;joinedPlayer, 0, sizeof(joinedPlayer));
	memset(&amp;reggedPlayer, 0, sizeof(reggedPlayer));
	memset(&amp;recvText, 0, sizeof(recvText));
}

void SlowBob::Clear()
{
	memset(&amp;oldJoinedPlayer, 0, sizeof(oldJoinedPlayer));
	memset(&amp;joinedPlayer, 0, sizeof(joinedPlayer));
	memset(&amp;reggedPlayer, 0, sizeof(reggedPlayer));
	memset(&amp;recvText, 0, sizeof(recvText));
}

void SlowBob::getItemCount()
{
	itemCount = SendMessage(list, LB_GETCOUNT, 0, 0);
}

void SlowBob::sendText(std::string text)
{
	SendMessage(edit, WM_SETTEXT, 0, (LPARAM)text.c_str());
	SendMessage(edit, WM_KEYDOWN, VK_RETURN, 0);
}

void SlowBob::kickPlayer(std::string id)
{
	if(id.size() &lt;= 0 || id.find(&quot; &quot;) != std::string::npos)
	{
		Clear();
		Tick();
	}
	else
	{
		sendText(&quot;kick &quot; + id);
		Sleep(200);
	}
}

void SlowBob::getJoinedPlayers()
{
	sendText(&quot;list&quot;); // Hier trat ein Stack overflow auf!
	Sleep(1000);
	getItemCount();
	SendMessage(list, LB_GETTEXT, itemCount - 1, (LPARAM)recvText);

	std::string s = recvText;

	if(s.size() &gt;= 16)
	{
		if(atoi(s.substr(15).c_str()) &gt;= 0 &amp;&amp; atoi(s.substr(15).c_str()) &lt;= 64)
			joinedPlayers = atoi((s.substr(15).c_str()));
		else
		{
			Clear();
			Tick();
		}
	}
}

void SlowBob::getJoinedPlayerIds()
{
	for(int a = 2, b = joinedPlayers - 1; a &lt;= (joinedPlayers + 1), b &gt;= 0; a++, b--)
	{
		SendMessage(list, LB_GETTEXT, itemCount - a, (LPARAM)recvText);

		std::string s       = recvText;
		size_t pos          = s.find(&quot;]&quot;);

		if(pos != std::string::npos)
		{
			if(s.substr(1, pos - 1).size() &lt;= 4)
				joinedPlayer[b].id  = s.substr(1, pos - 1);
			else
			{
				Clear();
				Tick();
			}
		}
	}
}

void SlowBob::getJoinedPlayerIps()
{
	for(int a = 0; a &lt; joinedPlayers; a++)
	{
		for(int b = 0; b &lt; oldJoinedPlayers; b++)
		{
			if(joinedPlayer[a].id == oldJoinedPlayer[b].id)
				joinedPlayer[a].ip = oldJoinedPlayer[b].ip;
		}

		if(strlen(joinedPlayer[a].ip.c_str()) &lt; 7)
		{
			sendText(&quot;playerip &quot; + joinedPlayer[a].id);
			Sleep(500);
			getItemCount();
		    SendMessage(list, LB_GETTEXT, itemCount - 1, (LPARAM)recvText);

			std::string s = recvText;

			if(s.find(&quot;failed&quot;) != std::string::npos)
			{
				sendText(&quot;say \&quot;{SlowBob} Could not seek IP. Penalty: Kick\&quot;&quot;);
				Sleep(2000);
				kickPlayer(joinedPlayer[a].id);
				Clear();
				Tick();
			}
			else if(s.find(&quot;error&quot;) != std::string::npos)
			{
				Clear();
				Tick();
			}	
			else if(s.find(&quot;ip&quot;) != std::string::npos)
				joinedPlayer[a].ip  = s.substr(s.find(&quot;:&quot;) + 2);
			else
			{
				Clear();
				Tick();
			}
		}
	}
}

void SlowBob::getReggedPlayerIps()
{
	reggedPlayers = 2;
	reggedPlayer[0].ip = &quot;192.168.0.5&quot;;
	reggedPlayer[1].ip = &quot;xx.xx.xx.xx&quot;;
}
</code></pre>
<p>Warum passiert da nach Stunden Laufzeit ein Stack overflow?<br />
Danke euch sehr!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162940/stack-overflow-hilfe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 20:51:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162940.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Oct 2006 14:39:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stack overflow - Hilfe on Tue, 24 Oct 2006 14:39:53 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Mein Autokick-Programm für Vietcong funktioniert prima, doch wenn ich es über Nacht laufen lasse und in der Früh schaue, sehe ich:</p>
<p>Visual C++ Express: Stack overflow!</p>
<p>Hier der ganze Code:</p>
<pre><code class="language-cpp">#ifndef INCLUDED_SLOWBOB
#define INCLUDED_SLOWBOB

//// &lt; I N C L U D E S &gt; /////////////////////////
#include &lt;windows.h&gt;
#include &lt;mmsystem.h&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;vector&gt;
//#include &quot;soci.h&quot;
//#include &quot;soci-mysql.h&quot;

//// &lt; C L A S S  SlowBob &gt; //////////////////////
class SlowBob
{
	HWND hWnd;
	HWND edit;
	HWND list;

	LRESULT itemCount;

	std::string windowTitle;

	TCHAR recvText[128];

	short oldJoinedPlayers;
	short joinedPlayers;
	short reggedPlayers;

	struct oldJoinedPlayer
	{
		std::string ip;
		std::string id;
	}; oldJoinedPlayer oldJoinedPlayer[64];

	struct joinedPlayer
	{
		std::string ip;
		std::string id;
	}; joinedPlayer joinedPlayer[64];

	struct reggedPlayer
	{
		std::string ip;
	}; reggedPlayer reggedPlayer[1000];

	//Session sql;

	std::vector&lt;std::string&gt; kickList;

	float current;
	float elapsed;
	float old;
public:
	SlowBob();
	~SlowBob();

	void Tick();
	void Check();
	void Kick();
	void UpdateOld();
	void Clear();

	void getItemCount();
	void sendText(std::string);
	void kickPlayer(std::string);

	void getJoinedPlayers();
	void getJoinedPlayerIds();
	void getJoinedPlayerIps();
	void getReggedPlayerIps();
};

#endif // INCLUDED_SLOWBOB
</code></pre>
<pre><code class="language-cpp">//// &lt; I N C L U D E S &gt; /////////////////////////
#include &quot;SlowBob.h&quot;

//// &lt; C L A S S  SlowBob &gt; //////////////////////
SlowBob::SlowBob()
{
	windowTitle = &quot;Vietcong v1.60 : BLACK PAJAMAS BLUE LAGUNA |FREE : 5425&quot;;

	hWnd = FindWindow(0, windowTitle.c_str());
	edit = FindWindowEx(hWnd, 0, &quot;Edit&quot;, 0);
	list = FindWindowEx(hWnd, 0, &quot;ListBox&quot;, 0);

	elapsed  = 0.0f;
	old      = 0.0f;

	oldJoinedPlayers = 0;

	Clear();
}

SlowBob::~SlowBob()
{
	;
}

void SlowBob::Tick()
{
	current  = timeGetTime() / 1000.0f;
	elapsed  += (current - old);
	old      = timeGetTime() / 1000.0f;

	if(elapsed &gt;= 5.0f)
	{
		getJoinedPlayers();
		getJoinedPlayerIds();
		getJoinedPlayerIps();
		getReggedPlayerIps();

		Check();

		if(kickList.size() &gt; 0)
			Kick();

		UpdateOld();

		elapsed = 0.0f;
	}

	Sleep(1);
}

void SlowBob::Check()
{
	for(int a = 0; a &lt; joinedPlayers; a++)
	{
		for(int b = 0; b &lt; reggedPlayers; b++)
		{
			if(!strcmp(joinedPlayer[a].ip.c_str(), reggedPlayer[b].ip.c_str()))
			{
				//if(b == (reggedPlayers - 1))
					kickList.push_back(joinedPlayer[a].id);
			}
			//else
				//b = reggedPlayers - 1;
		}
	}
}

void SlowBob::Kick()
{
	sendText(&quot;say \&quot;{SlowBob} Clearing kick list\&quot;&quot;);
	Sleep(1000);

	for(unsigned int a = 0; a &lt; kickList.size(); a++) 
		kickPlayer(kickList[a]);

	kickList.clear();
}

void SlowBob::UpdateOld()
{
	memset(&amp;oldJoinedPlayer, 0, sizeof(oldJoinedPlayer));

	for(int a = 0; a &lt; 64; a++)
	{
		oldJoinedPlayer[a].ip = joinedPlayer[a].ip;
		oldJoinedPlayer[a].id = joinedPlayer[a].id;
	}

	oldJoinedPlayers = joinedPlayers;

	memset(&amp;joinedPlayer, 0, sizeof(joinedPlayer));
	memset(&amp;reggedPlayer, 0, sizeof(reggedPlayer));
	memset(&amp;recvText, 0, sizeof(recvText));
}

void SlowBob::Clear()
{
	memset(&amp;oldJoinedPlayer, 0, sizeof(oldJoinedPlayer));
	memset(&amp;joinedPlayer, 0, sizeof(joinedPlayer));
	memset(&amp;reggedPlayer, 0, sizeof(reggedPlayer));
	memset(&amp;recvText, 0, sizeof(recvText));
}

void SlowBob::getItemCount()
{
	itemCount = SendMessage(list, LB_GETCOUNT, 0, 0);
}

void SlowBob::sendText(std::string text)
{
	SendMessage(edit, WM_SETTEXT, 0, (LPARAM)text.c_str());
	SendMessage(edit, WM_KEYDOWN, VK_RETURN, 0);
}

void SlowBob::kickPlayer(std::string id)
{
	if(id.size() &lt;= 0 || id.find(&quot; &quot;) != std::string::npos)
	{
		Clear();
		Tick();
	}
	else
	{
		sendText(&quot;kick &quot; + id);
		Sleep(200);
	}
}

void SlowBob::getJoinedPlayers()
{
	sendText(&quot;list&quot;); // Hier trat ein Stack overflow auf!
	Sleep(1000);
	getItemCount();
	SendMessage(list, LB_GETTEXT, itemCount - 1, (LPARAM)recvText);

	std::string s = recvText;

	if(s.size() &gt;= 16)
	{
		if(atoi(s.substr(15).c_str()) &gt;= 0 &amp;&amp; atoi(s.substr(15).c_str()) &lt;= 64)
			joinedPlayers = atoi((s.substr(15).c_str()));
		else
		{
			Clear();
			Tick();
		}
	}
}

void SlowBob::getJoinedPlayerIds()
{
	for(int a = 2, b = joinedPlayers - 1; a &lt;= (joinedPlayers + 1), b &gt;= 0; a++, b--)
	{
		SendMessage(list, LB_GETTEXT, itemCount - a, (LPARAM)recvText);

		std::string s       = recvText;
		size_t pos          = s.find(&quot;]&quot;);

		if(pos != std::string::npos)
		{
			if(s.substr(1, pos - 1).size() &lt;= 4)
				joinedPlayer[b].id  = s.substr(1, pos - 1);
			else
			{
				Clear();
				Tick();
			}
		}
	}
}

void SlowBob::getJoinedPlayerIps()
{
	for(int a = 0; a &lt; joinedPlayers; a++)
	{
		for(int b = 0; b &lt; oldJoinedPlayers; b++)
		{
			if(joinedPlayer[a].id == oldJoinedPlayer[b].id)
				joinedPlayer[a].ip = oldJoinedPlayer[b].ip;
		}

		if(strlen(joinedPlayer[a].ip.c_str()) &lt; 7)
		{
			sendText(&quot;playerip &quot; + joinedPlayer[a].id);
			Sleep(500);
			getItemCount();
		    SendMessage(list, LB_GETTEXT, itemCount - 1, (LPARAM)recvText);

			std::string s = recvText;

			if(s.find(&quot;failed&quot;) != std::string::npos)
			{
				sendText(&quot;say \&quot;{SlowBob} Could not seek IP. Penalty: Kick\&quot;&quot;);
				Sleep(2000);
				kickPlayer(joinedPlayer[a].id);
				Clear();
				Tick();
			}
			else if(s.find(&quot;error&quot;) != std::string::npos)
			{
				Clear();
				Tick();
			}	
			else if(s.find(&quot;ip&quot;) != std::string::npos)
				joinedPlayer[a].ip  = s.substr(s.find(&quot;:&quot;) + 2);
			else
			{
				Clear();
				Tick();
			}
		}
	}
}

void SlowBob::getReggedPlayerIps()
{
	reggedPlayers = 2;
	reggedPlayer[0].ip = &quot;192.168.0.5&quot;;
	reggedPlayer[1].ip = &quot;xx.xx.xx.xx&quot;;
}
</code></pre>
<p>Warum passiert da nach Stunden Laufzeit ein Stack overflow?<br />
Danke euch sehr!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160390</guid><dc:creator><![CDATA[Hello]]></dc:creator><pubDate>Tue, 24 Oct 2006 14:39:53 GMT</pubDate></item><item><title><![CDATA[Reply to Stack overflow - Hilfe on Tue, 24 Oct 2006 14:45:42 GMT]]></title><description><![CDATA[<p>getJoinedPlayers ruft Tick auf.<br />
Tick ruft getJoinedPlayers auf.<br />
getJoinedPlayers ruft Tick auf.<br />
Tick ruft getJoinedPlayers auf.<br />
getJoinedPlayers ruft Tick auf.<br />
Tick ruft getJoinedPlayers auf.<br />
getJoinedPlayers ruft Tick auf.<br />
Tick ruft getJoinedPlayers auf.<br />
getJoinedPlayers ruft Tick auf.<br />
Tick ruft getJoinedPlayers auf.<br />
getJoinedPlayers ruft Tick auf.<br />
Tick ruft getJoinedPlayers auf.</p>
<p>Und so weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160402</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 24 Oct 2006 14:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to Stack overflow - Hilfe on Tue, 24 Oct 2006 14:47:19 GMT]]></title><description><![CDATA[<p>Aber ich muss es doch so machen, oder? Wenn die Werte nicht stimmen, wird noch mal von Vorn begonnen, also wieder nach Tick().</p>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160404</guid><dc:creator><![CDATA[Hello]]></dc:creator><pubDate>Tue, 24 Oct 2006 14:47:19 GMT</pubDate></item><item><title><![CDATA[Reply to Stack overflow - Hilfe on Tue, 24 Oct 2006 14:50:44 GMT]]></title><description><![CDATA[<p>Hello schrieb:</p>
<blockquote>
<p>Aber ich muss es doch so machen, oder? Wenn die Werte nicht stimmen, wird noch mal von Vorn begonnen, also wieder nach Tick().</p>
</blockquote>
<p>Du beginnst nicht &quot;von vorn&quot;, sondern startest eine Rekursion. Du startest sozusagen die zweite Runde, bevor die erste vorbei ist. Und du startest die dritte Runde, bevor die zweite vorbei ist. Und da diese Rekursion nie abbricht, ist irgendwann der Stack voll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160410</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 24 Oct 2006 14:50:44 GMT</pubDate></item><item><title><![CDATA[Reply to Stack overflow - Hilfe on Tue, 24 Oct 2006 15:00:20 GMT]]></title><description><![CDATA[<p>Aha! Danke, verstehe!</p>
<p>Was bleibt mir nun übrig? Ich denke, ich redesigne alles...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160420</guid><dc:creator><![CDATA[Hello]]></dc:creator><pubDate>Tue, 24 Oct 2006 15:00:20 GMT</pubDate></item><item><title><![CDATA[Reply to Stack overflow - Hilfe on Tue, 24 Oct 2006 17:57:54 GMT]]></title><description><![CDATA[<p>Hello schrieb:</p>
<blockquote>
<p>Ich denke, ich redesigne alles...</p>
</blockquote>
<p>Das würde ich dir empfehlen. Bedenke auch, dass dein Programm nicht objektorientiert wird, nur weil du alles in eine Klasse packst. Da gehört schon etwas mehr dazu.</p>
<p>Deine Strukturen oldJoinedPlayer und joinedPlayer sind identisch. Warum dann überhaupt zwei Strukturen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160604</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 24 Oct 2006 17:57:54 GMT</pubDate></item></channel></rss>