<?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[Memory leak]]></title><description><![CDATA[<p>Hallo,<br />
ich habe ein Problem bei dem ich nicht weiter komme...</p>
<p>Und zwar verursacht bei mir das lesen mit recv() ein memory leak, trotz malloc &amp; free.</p>
<p>So sieht das ganze aus.<br />
Ich habe mehrmals getestet und verschiedene Sachen auskommentiert um zu sehen, was den leak verursacht. Übrig geblieben sind die wenigen Zeilen da unten... wenn ich recv() auch noch auskommentiere passiert nichts, aber wenn es drin ist, kann ich im System Monitor zuschauen wie mehr und mehr speicher belegt wird und mein Programm irgendwann abstürzt. Mein Puffer &quot;response&quot; leg ich auf 46bytes fest, da ein Paket halt so groß ist.</p>
<pre><code class="language-cpp">typedef unsigned char uint8;

funktion(int socket)
{
uint8 *response;

while(1)
{
   response = (uint8*)malloc(46*sizeof(uint8));
   recv(socket, response, 46, 0);
   free(response);
   response = NULL;
}
}
</code></pre>
<p>Weiß ejemand woran es noch liegen könnte, dass mein Speicher mehr und mehr belegt wird?<br />
Danke,<br />
Grüße,<br />
Franz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/275222/memory-leak</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 02:37:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/275222.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Oct 2010 15:32:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Memory leak on Mon, 11 Oct 2010 15:32:38 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe ein Problem bei dem ich nicht weiter komme...</p>
<p>Und zwar verursacht bei mir das lesen mit recv() ein memory leak, trotz malloc &amp; free.</p>
<p>So sieht das ganze aus.<br />
Ich habe mehrmals getestet und verschiedene Sachen auskommentiert um zu sehen, was den leak verursacht. Übrig geblieben sind die wenigen Zeilen da unten... wenn ich recv() auch noch auskommentiere passiert nichts, aber wenn es drin ist, kann ich im System Monitor zuschauen wie mehr und mehr speicher belegt wird und mein Programm irgendwann abstürzt. Mein Puffer &quot;response&quot; leg ich auf 46bytes fest, da ein Paket halt so groß ist.</p>
<pre><code class="language-cpp">typedef unsigned char uint8;

funktion(int socket)
{
uint8 *response;

while(1)
{
   response = (uint8*)malloc(46*sizeof(uint8));
   recv(socket, response, 46, 0);
   free(response);
   response = NULL;
}
}
</code></pre>
<p>Weiß ejemand woran es noch liegen könnte, dass mein Speicher mehr und mehr belegt wird?<br />
Danke,<br />
Grüße,<br />
Franz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963959</guid><dc:creator><![CDATA[cole-hawk]]></dc:creator><pubDate>Mon, 11 Oct 2010 15:32:38 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Mon, 11 Oct 2010 15:40:14 GMT]]></title><description><![CDATA[<p>Warum benutzt Du überhaupt dynamische Speicherallok.?<br />
Ist doch immer gleichgross und zur Compiletime bekannt.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963963</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 11 Oct 2010 15:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Mon, 11 Oct 2010 15:42:24 GMT]]></title><description><![CDATA[<p>Das ist C, nicht C++!<br />
(free/malloc, default-int)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963965</guid><dc:creator><![CDATA[Oberon_0]]></dc:creator><pubDate>Mon, 11 Oct 2010 15:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Mon, 11 Oct 2010 15:47:36 GMT]]></title><description><![CDATA[<p>Wie wäre es denn besser?<br />
Gibts in c++ ne bessere Möglichkeit?</p>
<p>Ich hatte vorher:</p>
<pre><code class="language-cpp">uint8 response[46];
</code></pre>
<p>und dann den ganzen malloc/free Kram weggelassen, aber hatte auch das Speicherproblem und dachte das malloc würde das beheben... aber auch damit gings nich...</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1963969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1963969</guid><dc:creator><![CDATA[cole-hawk]]></dc:creator><pubDate>Mon, 11 Oct 2010 15:47:36 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 06:26:12 GMT]]></title><description><![CDATA[<p>cole-hawk schrieb:</p>
<blockquote>
<pre><code class="language-cpp">uint8 response[46];
</code></pre>
<p>und dann den ganzen malloc/free Kram weggelassen, aber hatte auch das Speicherproblem und dachte das malloc würde das beheben... aber auch damit gings nich...</p>
</blockquote>
<p>Sehr viel besser. Was spricht dagegen?<br />
Dein Speicherproblem liegt höchstwahrscheinlich wo anders. Was für eine Meldung bekommst du? Wie stellst du das Speicherleck fest? Evtl. liegt es an der Endlosschleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964147</guid><dc:creator><![CDATA[Siassei]]></dc:creator><pubDate>Tue, 12 Oct 2010 06:26:12 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 11:20:18 GMT]]></title><description><![CDATA[<p>Ok, schon mal gut zu wissen, dass es so besser ist...<br />
Allerdings behebt es das Problem noch nicht..</p>
<p>Also das ganze soll die Pakete von einem Messgerät entgegen nehmen, welches 8000 solche 46Byte großen Pakete pro Sekunde sendet.<br />
Normalerweise kann die &quot;Endlosschleife&quot; auch abgebrochen werden, nur hab ichs hier der übersicht halber raus gelassen und while(1) geschrieben, also dadruch nicht verwirren lassen...</p>
<p>Fehler bekomme ich folgenden:<br />
terminate called after throwing an instance of std::bad_alloc</p>
<p>Den Fehler hatte ich schon häufiger, nur konnte ich ihn nich einordnen... gestern habe ich dann festgestellt, dass er immer auftritt, wenn diese Messung sehr lange läuft... nach ca 600 Sekunden trat er meistens auf...<br />
Also hab ich mir (unter Ubuntu) mit dem System Monitor mal den Verlauf der Speichernutzung angeschaut...<br />
Anfangs auf 4,5% (=365MiB) steigt die Kurve während der Nutzung auf ca. 45% an (=3,6GiB) und dann kommt der bad_alloc Fehler.<br />
Nur das ganze passiert nicht, wenn ich das recv() auskommentiere, also muss es doch daran liegen. Ich dache halt, wenn ich das so mach:</p>
<p>uint8 response[46];</p>
<p>...wird ständig neuer Speicher belegt und nicht mehr freigegeben, deshalb wollt ich das mit malloc fixen, aber hat ja nicht geklappt...<br />
Also kann ja nur noch das recv() das Problem verursachen, aber ich seh nicht, was ich falsch gemacht haben könnte...</p>
<p>Danke für Eure Hilfe!<br />
Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964333</guid><dc:creator><![CDATA[cole-hawk]]></dc:creator><pubDate>Tue, 12 Oct 2010 11:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 11:25:21 GMT]]></title><description><![CDATA[<p>Ja, dann zeig mal mehr Code.<br />
std::bad_alloc wird von new geworfen, wo ist also new benutzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964342</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 12 Oct 2010 11:25:21 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 11:51:15 GMT]]></title><description><![CDATA[<p>cole-hawk schrieb:</p>
<blockquote>
<p>uint8 response[46];</p>
<p>...wird ständig neuer Speicher belegt und nicht mehr freigegeben, deshalb wollt ich das mit malloc fixen, aber hat ja nicht geklappt...</p>
</blockquote>
<p>Jein. Du musst die Variable <strong>vor</strong> der while-Schleife deklarieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964369</guid><dc:creator><![CDATA[Siassei]]></dc:creator><pubDate>Tue, 12 Oct 2010 11:51:15 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 12:00:28 GMT]]></title><description><![CDATA[<p>Siassei schrieb:</p>
<blockquote>
<p>cole-hawk schrieb:</p>
<blockquote>
<p>uint8 response[46];</p>
<p>...wird ständig neuer Speicher belegt und nicht mehr freigegeben, deshalb wollt ich das mit malloc fixen, aber hat ja nicht geklappt...</p>
</blockquote>
<p>Jein. Du musst die Variable <strong>vor</strong> der while-Schleife deklarieren!</p>
</blockquote>
<p>Ist das wirklich so? Hätte ich auch nicht so gemacht da ich mir gedacht habe das die Lebensdauer der Variable ja nur für den Block gilt. Also das die nach jedem Durchlauf aus dem Scope läuft und es somit nicht zu so einer derben Speichernutzung kommen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964381</guid><dc:creator><![CDATA[Lebensdauer]]></dc:creator><pubDate>Tue, 12 Oct 2010 12:00:28 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 12:25:53 GMT]]></title><description><![CDATA[<p>Achso.. Klaro, das response habe ich vor der Schleife deklariert.</p>
<p>Das mit dem &quot;new&quot; ist so ne Sache... ich habe gar kein new verwendet... Aber ich schau nochmal nach, vielleicht ist ja doch irgendwo eins drin...<br />
Mein Programm ist insgesamt ziemlich groß, aber zur Zeit habe ich zum Testen nur diese eine Funktion mit der Schleife laufen, wobei ich außer dem recv in der schleife alles auskommentiert habe. Wie gesagt, nehm ich das recv raus und setz da ein kurzes sleep ein, passiert nix.. Speichernutzung steigt nicht an und auch kein bad_alloc.</p>
<p>Hab grad nochmal getestet... nach 620 Sekunden kam der bad_alloc. In der Zeit stieg die Speichernutzung von ca. 0.4GiB auf 3.4GiB. Also 3GiB in der Zeit. Das kommt mir jetzt allerdings etwas viel vor, da ich ja gesagt habe pro Sekunde werden 8000mal die 46Byte gelesen.. Das macht grade mal 0.21GiB...<br />
Liegt das Problem also doch woanders... warum funktioniert es dann aber, wenn ich das recv weglasse...</p>
<p>Alles sehr komisch hier <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964403</guid><dc:creator><![CDATA[cole-hawk]]></dc:creator><pubDate>Tue, 12 Oct 2010 12:25:53 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 12:27:19 GMT]]></title><description><![CDATA[<p>Hier liegen die 46 Byte auf dem Stack und sollten kaum schaden.</p>
<pre><code class="language-cpp">typedef unsigned char uint8;

funktion(int socket)
{
  uint8 response[46];
  int r;

  while( (r=recv(socket, response, sizeof response, 0))&gt;0 )
    /*fwrite( response, r, 1, stdout )*/;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1964404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964404</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Tue, 12 Oct 2010 12:27:19 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 12:28:18 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>Ja, dann zeig mal mehr Code.<br />
std::bad_alloc wird von new geworfen, wo ist also new benutzt?</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1964405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964405</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 12 Oct 2010 12:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 12:31:51 GMT]]></title><description><![CDATA[<p>Was machst du eigentlich mit den Daten die du bekommst? Verwirfst du die oder wie?<br />
Oder werden die gespeichert? Ich denke mal nicht das nur der Code in der Schleife steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964411</guid><dc:creator><![CDATA[DatenHandling]]></dc:creator><pubDate>Tue, 12 Oct 2010 12:31:51 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 12:34:52 GMT]]></title><description><![CDATA[<p>Verwendest du vielleicht STL Container?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964412</guid><dc:creator><![CDATA[DatenHandling]]></dc:creator><pubDate>Tue, 12 Oct 2010 12:34:52 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 13:01:18 GMT]]></title><description><![CDATA[<p>Nein, ich verwende die Daten, hatte es nur alles rausgelassen, weil ich denke, dass da das Problem nicht liegt...</p>
<pre><code class="language-cpp">int socket_LJ_B;

void Thread::setValues(int s)
{
socket_LJ_B = s;
}
void Thread::run()
{
	stopped = false;
	unsigned long counter_Value;
	int backLog;
	int k, packetCounter = 0;
	int totalPackets = 0;        				
	int pps, pps_fio;
	uint8 response[46];

	FILE* LJout_fid;

	LJout_fid =fopen(QFilenameLJ.toAscii().data(),&quot;w&quot;);

	gettimeofday(&amp;tv_lj,NULL);

	// read response from UE9 until stop button was clicked and stopped  
           gets true	
	while(!stopped)													
	{
		//Reading response from LJ UE9
		recv(socket_LJ_B, response , 46 , 0);		

		// Checking for errors and getting data out of each StreamData response
		// =================================================================&gt;&gt;&gt;
		totalPackets++;

		// checksum check	
		if(errorCheck((uint8 *)response, 46) == -1)		
			stopped = true;

		// check command bytes
		if( response[1] != (uint8)(0xF9) || response[2] != (uint8)(0x14) || response[3] != (uint8)(0xC0) )
		{
			stopped = true;
		}

		// give error code
		if(response[11] != 0)		
		{
			stopped = true;
		}

		//packetcounter
		if(packetCounter != (int)response[10])	
		{
			stopped = true;
		}

		backLog = response[45] &amp; 0x7F;

		//Checking MSB for Comm buffer overflow
		if( (response[45] &amp; 128) == 128)
		{
			stopped = true;
		}

		// now get data out of packet
		// ====================================================================
		for(k = 12; k &lt; 43; k += 8)								// step 8 because 2x Counterchannels (each 16bit) und 2x digital in channels (each 16bit)
		{
			// verschiebt jeweils um 8 bit nach links und addiert MSW und LSW
			counter_Value =  (unsigned long)response[k+0]; 
			counter_Value += (unsigned long)response[k+1] * pow(2,8);
			counter_Value += (unsigned long)response[k+2] * pow(2,16);
			counter_Value += (unsigned long)response[k+3] * pow(2,24);

			pps_fio = response[k+4] &amp; 0x04;						// 0x04 =&gt; (0100) == FIO2

			if (pps_fio == 4)	pps = 1;								// 4 because (0100) = 4
			else			pps = 0;

			fprintf(LJout_fid, &quot;%d\t%lu\n&quot;, pps , counter_Value);

		} // end for 

		if(packetCounter &gt;= 255) packetCounter = 0;
		else				 packetCounter++;

	} // end while (reading packets in a loop)

	fclose(LJout_fid);
}
</code></pre>
<p>stopped wird außerdem noch true gesetzt, wenn ich in meinem prog. auf stop klicke, also nicht wundern <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>Ich glaub nicht, dass ich STL Container verwende ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964434</guid><dc:creator><![CDATA[cole-hawk]]></dc:creator><pubDate>Tue, 12 Oct 2010 13:01:18 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 13:43:29 GMT]]></title><description><![CDATA[<p>Ok... ich Depp...<br />
Ich war mir so sicher, dass es der einzige Thread mit Schleife ist, der aufgerufen wird, dabei hatte ich noch eine andere kleine Funktion übersehen, die auch noch im Hintergrund lief. Da hatte ich in ner while Schleife ziemliche viele Variablen deklariert... double, int, QString usw...<br />
Ich denke &amp; hoffe, dass es daran lag... werds gleich mal testen und sag dann bescheid...</p>
<p>Danke für Eure Mithilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964473</guid><dc:creator><![CDATA[cole-hawk]]></dc:creator><pubDate>Tue, 12 Oct 2010 13:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 14:29:56 GMT]]></title><description><![CDATA[<p>Ohne deinen Code genau studiert zu haben, aber warum verwendest du kein Tool zum Aufspüren von deinem MemoryLeak? z.B. Valgrind oder vergleichbares im VS Studio</p>
<pre><code class="language-cpp">(unsigned long)response[k+3] * pow(2,24)
</code></pre>
<p>Merkwürdiger Code. &quot;response&quot; ist doch bereits ein uint8. Warum keine Shift-Operation? pow() ist im Vergleich zu &lt;&lt; sehr langsam. Etwa wie Ente gegen Porsche <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964495</guid><dc:creator><![CDATA[Siassei]]></dc:creator><pubDate>Tue, 12 Oct 2010 14:29:56 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 14:35:53 GMT]]></title><description><![CDATA[<p>Danke für den Tipp mit Valgrind... Werd ich mir mal anschauen...</p>
<p>Den Shift-Operator werd ich auch mal ausprobieren...<br />
Ist schon ne ganze Weile her, dass ich das geschrieben habe und war damals froh, dass es überhaupt funktioniert hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Zu meinem Problem... Es scheint schon besser geworden zu sein, die Speicherbelegung steigt nicht mehr so schnell, wie zuvor... aber immer noch ein klein wenig... Da die Messung später mal mehrere Stunden laufen soll, darf ichs nicht riskieren, dass sowas nochmal vorkommt...<br />
Werd also Valgrind morgen mal testen...</p>
<p>Danke <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="😉"
    /><br />
Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964496</guid><dc:creator><![CDATA[cole-hawk]]></dc:creator><pubDate>Tue, 12 Oct 2010 14:35:53 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Tue, 12 Oct 2010 15:38:21 GMT]]></title><description><![CDATA[<p>Vielleicht noch eins</p>
<pre><code class="language-cpp">pps_fio = response[k+4] &amp; 0x04;
if (pps_fio == 4)
    pps = 1;
else
    pps = 0;
</code></pre>
<p>In der if-Abfrage kannst du die 4 weglassen. Das ist nur eine zusätzliche Fehlerquelle.</p>
<pre><code class="language-cpp">if (pps_fio)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1964529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964529</guid><dc:creator><![CDATA[Siassei]]></dc:creator><pubDate>Tue, 12 Oct 2010 15:38:21 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Wed, 13 Oct 2010 07:55:23 GMT]]></title><description><![CDATA[<p>Danke Siassei. Ich sollte dir mal meinen lompletten Code schicken, da findest du bestimmt noch einige solche Sinnlosigkeiten <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>Hab valgrind mal ausprobiert, werd aber nicht schlau daraus...</p>
<p>Das gibt ja 1Mio sachen aus...</p>
<p>z.B.:</p>
<pre><code>==1474== HEAP SUMMARY:
==1474==     in use at exit: 61,501,801 bytes in 402,729 blocks
==1474==   total heap usage: 4,276,975 allocs, 3,874,246 frees, 4,334,135,123 bytes allocated

==1474== LEAK SUMMARY:
==1474==    definitely lost: 316,792 bytes in 4,293 blocks
==1474==    indirectly lost: 53,278,044 bytes in 346,043 blocks
==1474==      possibly lost: 7,257,326 bytes in 44,479 blocks
==1474==    still reachable: 649,639 bytes in 7,914 blocks
==1474==         suppressed: 0 bytes in 0 blocks
</code></pre>
<p>und dazwischen ne mio ausgaben wie diese:</p>
<pre><code>==1474== 5,083,556 (27,776 direct, 5,055,780 indirect) bytes in 217 blocks are definitely lost in loss record 11,337 of 11,340
==1474==    at 0x402569A: operator new(unsigned int) (vg_replace_malloc.c:255)
==1474==    by 0x52A1E5E: ??? (in /usr/lib/libQtSvg.so.4.6.2)
==1474==    by 0x52B28F6: ??? (in /usr/lib/libQtSvg.so.4.6.2)
==1474==    by 0x52B4377: ??? (in /usr/lib/libQtSvg.so.4.6.2)
==1474==    by 0x52B46BD: ??? (in /usr/lib/libQtSvg.so.4.6.2)
==1474==    by 0x52B4C7A: ??? (in /usr/lib/libQtSvg.so.4.6.2)
==1474==    by 0x52C630F: QSvgTinyDocument::load(QString const&amp;) (in /usr/lib/libQtSvg.so.4.6.2)
==1474==    by 0x52C7609: QSvgRenderer::load(QString const&amp;) (in /usr/lib/libQtSvg.so.4.6.2)
==1474==    by 0x403EF45: QLed::paintEvent(QPaintEvent*) (in /usr/lib/libqledplugin.so)
==1474==    by 0x420F6B5: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==    by 0x41B14DB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==    by 0x41B80F8: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.6.2)
==1474== 
==1474== 6,476,276 (172,960 direct, 6,303,316 indirect) bytes in 1,880 blocks are definitely lost in loss record 11,338 of 11,340
==1474==    at 0x402569A: operator new(unsigned int) (vg_replace_malloc.c:255)
==1474==    by 0x52C7868: QSvgRenderer::QSvgRenderer(QObject*) (in /usr/lib/libQtSvg.so.4.6.2)
==1474==    by 0x403EDA5: QLed::paintEvent(QPaintEvent*) (in /usr/lib/libqledplugin.so)
==1474==    by 0x420F6B5: QWidget::event(QEvent*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==    by 0x41B14DB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==    by 0x41B80F8: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==    by 0x4C60A3A: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/libQtCore.so.4.6.2)
==1474==    by 0x42189D5: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&amp;, QPoint const&amp;, int, QPainter*, QWidgetBackingStore*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==    by 0x4219814: QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList&lt;QObject*&gt; const&amp;, int, QRegion const&amp;, QPoint const&amp;, int, QPainter*, QWidgetBackingStore*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==    by 0x421964D: QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList&lt;QObject*&gt; const&amp;, int, QRegion const&amp;, QPoint const&amp;, int, QPainter*, QWidgetBackingStore*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==    by 0x421964D: QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList&lt;QObject*&gt; const&amp;, int, QRegion const&amp;, QPoint const&amp;, int, QPainter*, QWidgetBackingStore*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==    by 0x421964D: QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList&lt;QObject*&gt; const&amp;, int, QRegion const&amp;, QPoint const&amp;, int, QPainter*, QWidgetBackingStore*) (in /usr/lib/libQtGui.so.4.6.2)
==1474==
</code></pre>
<p>wobei die hier geposteten die letzten beiden sind, also die mit den meisten lost bytes..</p>
<p>vielleicht hätte ich dazu sagen sollen, dass ich mit qt arbeite und eine gui dazu gebastelt habe, die da mitläuft...<br />
Ich dachte halt, die Funktion, die ich da anfangs gepostet habe wäre mein einziges Problem, aber scheinbar steckt doch mehr dahinter...</p>
<p>Danke nochmal für eure hilfe...<br />
Vielleicht find ich das Problem ja irgendwann mal.. Sonst muss ich halt damit leben <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/1964802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964802</guid><dc:creator><![CDATA[cole-hawk]]></dc:creator><pubDate>Wed, 13 Oct 2010 07:55:23 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Wed, 13 Oct 2010 10:33:44 GMT]]></title><description><![CDATA[<p>Siassei schrieb:</p>
<blockquote>
<p>...<br />
Jein. Du musst die Variable <strong>vor</strong> der while-Schleife deklarieren!</p>
</blockquote>
<p>Und warum das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1964883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1964883</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 13 Oct 2010 10:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Memory leak on Wed, 13 Oct 2010 15:14:22 GMT]]></title><description><![CDATA[<p>cole-hawk schrieb:</p>
<blockquote>
<p>vielleicht hätte ich dazu sagen sollen, dass ich mit qt arbeite und eine gui dazu gebastelt habe, die da mitläuft...<br />
Ich dachte halt, die Funktion, die ich da anfangs gepostet habe wäre mein einziges Problem, aber scheinbar steckt doch mehr dahinter...</p>
</blockquote>
<p>Na, das wird ja immer schöner <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="🙂"
    /></p>
<p>Ich lege dir die offizielle Doku nahe. Beim durchlesen lernst du was und findest deine Fehler auch. Erst beim Debuggen lernt man das, was wichtig ist.<br />
<a href="http://valgrind.org/docs/manual/quick-start.html#quick-start.interpret" rel="nofollow">http://valgrind.org/docs/manual/quick-start.html#quick-start.interpret</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1965083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1965083</guid><dc:creator><![CDATA[Siassei]]></dc:creator><pubDate>Wed, 13 Oct 2010 15:14:22 GMT</pubDate></item></channel></rss>