<?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[Segmentation fault in Mysql-ResultSet-Schleife]]></title><description><![CDATA[<p>Hallo liebes Forum.<br />
Aus einem mir nicht ersichtlichen Grund bekomme ich in einer while-Schleife in der ich die einzelnen Datensätze abwackel ein Segmentation fault. Der Debugger sagt, der Fehler kommt beim verlassen der Schleife, allerdings versteh ich das nicht. Wenn ich versuche den C_String nach jedem Schleifen Durchgang zulöschen kommt dasselbe.</p>
<pre><code>void enter(int d)		//Funktion für neue Clients
{

	sql::Driver *driver;	//MySQL-Driver
	sql::Connection *con;	//MySQL-Verbindug
	sql::Statement *stmt;	//MySQL-Abfrage
	sql::ResultSet *res;	//MySQL-Ergebnis
	driver = get_driver_instance();
	con = driver-&gt;connect(&quot;tcp://192.168.0.4:3306&quot;,&quot;web&quot;,&quot;Sommer02&quot;);
	con-&gt;setSchema(&quot;Chat&quot;);
	stmt = con-&gt;createStatement();
	std::string flick;    //String zum zusammenflicken
	char* buf;   //C_String fürs das Versenden an Client
	res = stmt-&gt;executeQuery(&quot;SELECT * FROM Messages WHERE M_zeit LIKE concat(CURDATE(),'%')&quot;);
	while(res-&gt;next())
	{
		if(connections[d].sock &gt;= 0)
		{
			flick = res-&gt;getString(&quot;M_zeit&quot;) + &quot; | &quot; + res-&gt;getString(&quot;M_name&quot;) + &quot;:  &quot; + res-&gt;getString(&quot;M_msg&quot;) + &quot;\n&quot;;
			buf = new char[flick.size()];
			for(int i = 0; i&lt;flick.size();i++)
			{
				buf[i] = flick[i];
			}
			buf[flick.size()]='\0';
			send(connections[d].sock,&amp;buf[0],flick.size(),0);
		}
	} //Hier kommt der Segmentation Fault
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/314275/segmentation-fault-in-mysql-resultset-schleife</link><generator>RSS for Node</generator><lastBuildDate>Sat, 01 Aug 2026 08:55:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/314275.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Feb 2013 08:25:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:25:12 GMT]]></title><description><![CDATA[<p>Hallo liebes Forum.<br />
Aus einem mir nicht ersichtlichen Grund bekomme ich in einer while-Schleife in der ich die einzelnen Datensätze abwackel ein Segmentation fault. Der Debugger sagt, der Fehler kommt beim verlassen der Schleife, allerdings versteh ich das nicht. Wenn ich versuche den C_String nach jedem Schleifen Durchgang zulöschen kommt dasselbe.</p>
<pre><code>void enter(int d)		//Funktion für neue Clients
{

	sql::Driver *driver;	//MySQL-Driver
	sql::Connection *con;	//MySQL-Verbindug
	sql::Statement *stmt;	//MySQL-Abfrage
	sql::ResultSet *res;	//MySQL-Ergebnis
	driver = get_driver_instance();
	con = driver-&gt;connect(&quot;tcp://192.168.0.4:3306&quot;,&quot;web&quot;,&quot;Sommer02&quot;);
	con-&gt;setSchema(&quot;Chat&quot;);
	stmt = con-&gt;createStatement();
	std::string flick;    //String zum zusammenflicken
	char* buf;   //C_String fürs das Versenden an Client
	res = stmt-&gt;executeQuery(&quot;SELECT * FROM Messages WHERE M_zeit LIKE concat(CURDATE(),'%')&quot;);
	while(res-&gt;next())
	{
		if(connections[d].sock &gt;= 0)
		{
			flick = res-&gt;getString(&quot;M_zeit&quot;) + &quot; | &quot; + res-&gt;getString(&quot;M_name&quot;) + &quot;:  &quot; + res-&gt;getString(&quot;M_msg&quot;) + &quot;\n&quot;;
			buf = new char[flick.size()];
			for(int i = 0; i&lt;flick.size();i++)
			{
				buf[i] = flick[i];
			}
			buf[flick.size()]='\0';
			send(connections[d].sock,&amp;buf[0],flick.size(),0);
		}
	} //Hier kommt der Segmentation Fault
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2302056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302056</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:29:12 GMT]]></title><description><![CDATA[<p>Du weisst dass std::string die Methode c_str() hat?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302059</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:29:12 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:30:11 GMT]]></title><description><![CDATA[<p>ja das Problem dabei ist das dann const char* zurückgeliefert wird und mit strcpy wollte ich nicht arbeiten, das soll nicht so sicher sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302060</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:30:11 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:31:22 GMT]]></title><description><![CDATA[<p>Wenn du ein Array für n Elemente erstellst, welchen Index hat dann das letzte Element?</p>
<p>edit:</p>
<p>luggas schrieb:</p>
<blockquote>
<p>ja das Problem dabei ist das dann const char* zurückgeliefert wird und mit strcpy wollte ich nicht arbeiten, das soll nicht so sicher sein.</p>
</blockquote>
<p>lol - strcpy ist zu unsicher, aber mit dynamischen Arrays arbeiten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302061</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:31:22 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:31:45 GMT]]></title><description><![CDATA[<p>na der letzte Index ist flick.size()-1 oder etwa nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302063</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:31:45 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:33:04 GMT]]></title><description><![CDATA[<p>luggas schrieb:</p>
<blockquote>
<p>na der letzte Index ist flick.size()-1 oder etwa nicht?</p>
</blockquote>
<p>stimmt. und mit diesem Wissen solltest du nochmal kritisch deinen Code betrachten.</p>
<p>übrigens fehlt das delete[] zu deinem new.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302064</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:46:31 GMT]]></title><description><![CDATA[<p>also mit dem Index müsste es soweit hinhauen, denn wenn ich die Bedingung der for-Schleife auf i&lt;flick.size()-1 setze schneidet er mit das '\n' weg.<br />
Was das delete[] buf angeht, da bringt er mir einen Fehler</p>
<pre><code>free(): invalid next size (fast)
</code></pre>
<p>dann kommen ein haufen hexadezimale Adressbereiche und zum Schluss steht da das er abbgebrochen hat</p>
<pre><code>Program received signal SIGABRT in __kernel_vsyscall()
</code></pre>
<p>Ich denke das hängt irgendwie mit der Neualloziierung des C_Strings zusammen</p>
<p>edit:</p>
<p>ok strcpy würde gehen, aber ist doch letzlich egal ob ich das selber mache oder ob das strcpy macht beides gleich oder arbeitet strcpy anders?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302065</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:46:31 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:44:48 GMT]]></title><description><![CDATA[<p>luggas schrieb:</p>
<blockquote>
<p>also mit dem Index müsste es soweit hinhauen, denn wenn ich die Bedingung der for-Schleife auf i&lt;flick.size()-1 setze schneidet er mit das '\n' weg.</p>
</blockquote>
<p>ich rede auch nicht von der Schleife.</p>
<p>luggas schrieb:</p>
<blockquote>
<p>Was das delete[] buf angeht, da bringt er mir einen Fehler</p>
</blockquote>
<p>wo hast du das denn eingefügt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302066</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:44:48 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:48:36 GMT]]></title><description><![CDATA[<p>oh jetzt seh ichs</p>
<pre><code>buf[flick.size()] = '\0'
</code></pre>
<p>muss</p>
<pre><code>buf[flick.size()-1] = '\0'
</code></pre>
<p>heißen</p>
<p>ehm und zwar unter send einfach</p>
<pre><code>delete[] buf;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2302067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302067</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:48:36 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:52:28 GMT]]></title><description><![CDATA[<p>es ist so unfassbar dieser Index war das Problem und deswegen ging auch delete[] nicht weil der ein Element dealloziieren wollte, welches garnicht da war</p>
<p>Danke sehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302068</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Thu, 12 Jun 2014 03:35:00 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302069</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 03:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 08:55:57 GMT]]></title><description><![CDATA[<p>das ist der MySQL-Connector</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302070</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 08:55:57 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 09:43:00 GMT]]></title><description><![CDATA[<p>luggas schrieb:</p>
<blockquote>
<pre><code>buf[flick.size()-1] = '\0'
</code></pre>
<p>heißen</p>
</blockquote>
<p>Wenn du das letzte Zeichen im String nicht benötigst ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302082</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 26 Feb 2013 09:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 11:25:56 GMT]]></title><description><![CDATA[<p>ich habs jetzt andersrum</p>
<pre><code>while(res-&gt;next())
	{
		if(connections[d].sock &gt;= 0)
		{
			flick = res-&gt;getString(&quot;M_zeit&quot;) + &quot; | &quot; + res-&gt;getString(&quot;M_name&quot;) + &quot;:  &quot; + res-&gt;getString(&quot;M_msg&quot;) + &quot;\n&quot;;
			buf = new char[flick.size()+1];
			for(int i = 0; i&lt;flick.size();i++)
			{
				buf[i] = flick.at(i);
			}
			buf[flick.size()]='\0';
			send(connections[d].sock,&amp;buf[0],flick.size(),0);
			delete[] buf;
		}
	}
</code></pre>
<p>Ausserdem brauch ich nochmal Hilfe.<br />
Dieser Thread soll durchweg Datenbankabfragen machen und wenn etwas verändert wird oder hinzukommt an alle Clients verschicken. Allerdings versendet er die Daten nicht kommplett, und kratz dann ab mit der Meldung out of memory.</p>
<pre><code>void* brd_cst(void*)
{
	try
	{
		sql::Driver *driver;	//MySQL-Driver
		sql::Connection *con;	//MySQL-Verbindug
		sql::Statement *stmt;	//MySQL-Abfrage
		sql::ResultSet *res;	//MySQL-Ergebnis

		//Verbindung herstellen zu MySQL-Datenbank
		driver = get_driver_instance();
		con = driver-&gt;connect(&quot;tcp://192.168.0.4:3306&quot;,&quot;web&quot;,&quot;Sommer02&quot;);
		con-&gt;setSchema(&quot;Chat&quot;);
		stmt = con-&gt;createStatement();
		std::string flick;
		char* buf;
		std::vector&lt;std::string&gt; result_old;
		res = stmt-&gt;executeQuery(&quot;SELECT * FROM Messages WHERE M_zeit LIKE concat(CURDATE(),'%')&quot;);
		while(res-&gt;next())
		{
			result_old.push_back(res-&gt;getString(&quot;M_ID&quot;));
		}
		int i;
		while(true)
		{
			i = 0;
			res = stmt-&gt;executeQuery(&quot;SELECT * FROM Messages WHERE M_zeit LIKE concat(CURDATE(),'%')&quot;);
			while(res-&gt;next())					//Datensätze abwackeln
			{
				if(i &gt; result_old.size()-1)		//Wenn die alten Datensätze weniger waren
				{
					pthread_mutex_lock(&amp;mutex);
					for(int k = 0; k&lt;MAX;k++)			//Senden der Ergebnisse | alle Connections durchgehen
					{
						if(connections[k].sock &gt;= 0)	//Wenn Verbindung
						{
							flick = res-&gt;getString(&quot;M_zeit&quot;) + &quot; | &quot; + res-&gt;getString(&quot;M_name&quot;) + &quot;:  &quot; + res-&gt;getString(&quot;M_msg&quot;) + &quot;\n&quot;;
							buf = new char[flick.size()+1];
							for(int j = 0; i&lt;flick.size();i++)
							{
								buf[j] = flick.at(j);  //An dieser Stelle schreibt er komischer Weiße nur das erste Glied auf buf
							}
							buf[flick.size()]='\0';
							printf(&quot;%s&quot;,buf);fflush(stdout);
							send(connections[k].sock,&amp;buf[0],flick.size(),0);
							delete[] buf;
						}
					}
					pthread_mutex_unlock(&amp;mutex);
					result_old.push_back(res-&gt;getString(&quot;M_ID&quot;));	//alte Datensätze aufrischen
				}
				else if(res-&gt;getString(&quot;M_ID&quot;).compare(result_old[i]) != 0)	//Wenn Datensatz unterschiedlich
				{
					pthread_mutex_lock(&amp;mutex);
					for(int k = 0; k&lt;MAX;k++)			//Senden der Ergebnisse | alle Connections durchgehen
					{
						if(connections[k].sock &gt;= 0)	//Wenn Verbindung
						{
							flick = res-&gt;getString(&quot;M_zeit&quot;) + &quot; | &quot; + res-&gt;getString(&quot;M_name&quot;) + &quot;:  &quot; + res-&gt;getString(&quot;M_msg&quot;) + &quot;\n&quot;;
							buf = new char[flick.size()+1];
							for(int j = 0; i&lt;flick.size();i++)
							{
								buf[j] = flick.at(j);
							}
							buf[flick.size()]='\0';
							printf(&quot;%s+L&quot;,buf);fflush(stdout);
							send(connections[k].sock,&amp;buf[0],flick.size(),0);
							delete[] buf;
						}
					}
					pthread_mutex_unlock(&amp;mutex);
					result_old[i] = res-&gt;getString(&quot;M_ID&quot;);		//alten Datensatze aufrischen
				}
				i++;
			}
		}
		delete res;
		delete stmt;
		delete con;
	}
	catch(sql::SQLException &amp;e)
	{
		printf(&quot;%s\n&quot;,e.what());
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2302114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302114</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 11:25:56 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 11:49:35 GMT]]></title><description><![CDATA[<p>also das Problem mit dem String hab ich selbst gefunden hab mich in der for-Schleife vertippt, aber das out of Memory bekom ich nicht weg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302122</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 11:49:35 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 12:06:40 GMT]]></title><description><![CDATA[<p>Du machst mit Exceptions rum und wartest sogar auf diese, benutzt aber fleissig wo es nur geht new ??</p>
<p>Das widerspricht sich und ist total grob falsch.</p>
<p>Ich kenne die SQL-Wrapper nicht und hab mir deinen Code auch nicht wirklich angesehen. Aber was dir apssieren könnte ist, dass bei dir fleissig SQL-Exceptions kommen, diese werden gefangen (alles kein Problem), aber du baust dir pro Funktionsaufruf hier ein Speicherloch welches nicht gelöscht wird. Das passiert dann pro Sekunde paar 100mal und zack ist dein RAM voll und dein Betriebssystem mag dir keinen Speicher mehr geben...</p>
<p>Guck doch wenigstens mal parallel den Taskmanager dabei an...<br />
(Unter Linux gibt es ja sicher was ähnliches)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302126</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 26 Feb 2013 12:06:40 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 12:41:52 GMT]]></title><description><![CDATA[<p>musst du res, con und stmt wirklich manuell freigeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302141</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 26 Feb 2013 12:41:52 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 13:17:03 GMT]]></title><description><![CDATA[<p>ja das steht so in dem Manual.</p>
<p>BTW hab ich es gelöst indem ich nach jedem Schleifen Durchlauf res mit delete freigebe und erneut am anfang deklariere.</p>
<p>Die Sache mit den Exceptions ist ein guter Hinweis. Meinst du ich sollte diese nur fangen wenn sie auch gewurfen werden können? Die endlos Schleife ist allerdings gewollt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302148</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 13:17:03 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 14:28:35 GMT]]></title><description><![CDATA[<p>luggas schrieb:</p>
<blockquote>
<p>es ist so unfassbar dieser Index war das Problem</p>
</blockquote>
<p>Du provozierst solche Fehler geradezu, wenn du ständig auf tiefer Abstraktionsebene entwickelst.</p>
<p>Statt statischen Arrays, nimm <code>std::array</code> (hat Index-Checks im Debug-Modus, neben vielen sonstigen Vorteilen). Statt <code>new[]</code> und <code>delete[]</code> , nimm <code>std::vector</code> . Statt <code>char*</code> , nimm <code>std::string</code> . Statt <code>new</code> und <code>delete</code> , nimm automatische Objekte oder <code>std::unique_ptr</code> . Diese Techniken sind allesamt sicherer und einfacher zu verwenden.</p>
<p>Kurz: Benutze RAII. Dann löst du auch schön das von Skym0sh0 angesprochene Problem der Exceptionsicherheit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302178</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 26 Feb 2013 14:28:35 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Tue, 26 Feb 2013 16:18:22 GMT]]></title><description><![CDATA[<p>Versteh ich das richtig mit exception-sicherheit meint ihr, das der code der gefahr ausläuft objekte nicht zu dealloziieren, wenn er eine exception wirft?<br />
Mit raii hab ich noch nicht gearbeitet, aber ich versuch es mal zu implementieren. Danke euch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302205</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Tue, 26 Feb 2013 16:18:22 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Wed, 27 Feb 2013 08:10:09 GMT]]></title><description><![CDATA[<p>luggas schrieb:</p>
<blockquote>
<p>Versteh ich das richtig mit exception-sicherheit meint ihr, das der code der gefahr ausläuft objekte nicht zu dealloziieren, wenn er eine exception wirft?</p>
</blockquote>
<p>Ja. Denn der aktuelle Programmfluss wird ja sofort unterbrochen und es wird zum nächsten passenden catch gesprungen. Und in diesem hast du ja kein delete[]...</p>
<pre><code>int main()
{
                        __int64 count = 0;
			try {
				char * buf;
				while ( 1 )
				{
					buf = new char[100];
					std::memset(buf, ' ', 100);
					count++;
				}
			} catch (std::exception &amp; e)
			{
				std::cout &lt;&lt; e.what() &lt;&lt; std::endl;
				std::cout &lt;&lt; &quot;Counts: &quot; &lt;&lt; count &lt;&lt; std::endl;
				std::cin.get();
				return -1;
			}
}
</code></pre>
<p>Diesen Code hab ich grad mal bei mir laufen lassen, der kackt nach etwa 13-15 Millionen Durchläufen ab. Dauert keine 20 Sekunden. So kannst du dir das vorstellen. (Das try-catch ist auch nur dafür da, dass man überhaupt was sieht. Kannst ja selbst mal ausführen.</p>
<p>luggas schrieb:</p>
<blockquote>
<p>Mit raii hab ich noch nicht gearbeitet, aber ich versuch es mal zu implementieren. Danke euch.</p>
</blockquote>
<p>RAII ist so wichtig, grundlegend und mächtig, dass es wehtut wenn man es nicht verwendet... Nachholen Kollege!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302425</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 27 Feb 2013 08:10:09 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Wed, 27 Feb 2013 12:11:33 GMT]]></title><description><![CDATA[<p>Ich hab auch grad mal in meinem Buch von Bjarne Stroustrup gschaut und er beschreibt das auch nochmal sehr schön. Danke für den essentiellen Hinweis <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2302523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302523</guid><dc:creator><![CDATA[luggas]]></dc:creator><pubDate>Wed, 27 Feb 2013 12:11:33 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault in Mysql-ResultSet-Schleife on Wed, 27 Feb 2013 12:22:18 GMT]]></title><description><![CDATA[<p>Auch essentiell (siehe erste Antwort im Thread):</p>
<pre><code class="language-cpp">while(res-&gt;next())
    {
        if(connections[d].sock &gt;= 0)
        {
            flick = res-&gt;getString(&quot;M_zeit&quot;) + &quot; | &quot; + res-&gt;getString(&quot;M_name&quot;) + &quot;:  &quot; + res-&gt;getString(&quot;M_msg&quot;) + &quot;\n&quot;;
            buf = new char[flick.size()];
            for(int i = 0; i&lt;flick.size();i++)
            {
                buf[i] = flick[i];
            }
            buf[flick.size()]='\0';
            send(connections[d].sock,&amp;buf[0],flick.size(),0);
        }
    }
</code></pre>
<p>wird zu:</p>
<pre><code class="language-cpp">while(res-&gt;next())
    {
        if(connections[d].sock &gt;= 0)
        {
          const std::string flick = res-&gt;getString(&quot;M_zeit&quot;) + &quot; | &quot; +
                                    res-&gt;getString(&quot;M_name&quot;) + &quot;:  &quot; +
                                    res-&gt;getString(&quot;M_msg&quot;);
          send(connections[d].sock, flick.c_str(), flick.size()+1, 0);
        }
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2302528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2302528</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 27 Feb 2013 12:22:18 GMT</pubDate></item></channel></rss>