<?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[Speicher wird nicht freigegeben]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand sagen, warum der reservierte Speicher bei folgendem Codeausschnitt nicht freigegeben wird?</p>
<pre><code class="language-cpp">LPSTR FILEHANDLER::GetPathFromJobIni(int i, BOOL bGetFromDone)
{
	TCHAR * cBuffer= new TCHAR[MAX_PATH];	// Buffer to recieve the path
	char cI[6];
	sprintf(cI, &quot;%d&quot;, i);
	LPSTR szIniFile;						

	//	Set job file path to either done or current
	if(bGetFromDone)
	{
		szIniFile= this-&gt;szIniDone;
	}
	else
	{
		szIniFile= this-&gt;szIniJobs;
	}

	// Get job's filename from jobs file
	GetPrivateProfileString(cI, this-&gt;szPathKeyName, &quot;&quot;, cBuffer, MAX_PATH, szIniFile);

	// Return the job's filename
	return cBuffer;
}

static unsigned long __stdcall ConverterThread(void* instance)
{
	CONVJOB cj;
	while(1)
	{
	fh.GetPathFromJobIni(0, FALSE);	// o.g. Funktion in Schleife ausführen	
	}
	return 0;
}
</code></pre>
<p>Beim Ausführen dieses Codes steigt der reservierte Speicher für den Prozess kontinuierlich an und ist innerhalb weniger Minuten auf ein paar Gigabyte.</p>
<p>Gruß veryxRV</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192625/speicher-wird-nicht-freigegeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 20:13:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192625.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Sep 2007 05:18:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 05:18:33 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand sagen, warum der reservierte Speicher bei folgendem Codeausschnitt nicht freigegeben wird?</p>
<pre><code class="language-cpp">LPSTR FILEHANDLER::GetPathFromJobIni(int i, BOOL bGetFromDone)
{
	TCHAR * cBuffer= new TCHAR[MAX_PATH];	// Buffer to recieve the path
	char cI[6];
	sprintf(cI, &quot;%d&quot;, i);
	LPSTR szIniFile;						

	//	Set job file path to either done or current
	if(bGetFromDone)
	{
		szIniFile= this-&gt;szIniDone;
	}
	else
	{
		szIniFile= this-&gt;szIniJobs;
	}

	// Get job's filename from jobs file
	GetPrivateProfileString(cI, this-&gt;szPathKeyName, &quot;&quot;, cBuffer, MAX_PATH, szIniFile);

	// Return the job's filename
	return cBuffer;
}

static unsigned long __stdcall ConverterThread(void* instance)
{
	CONVJOB cj;
	while(1)
	{
	fh.GetPathFromJobIni(0, FALSE);	// o.g. Funktion in Schleife ausführen	
	}
	return 0;
}
</code></pre>
<p>Beim Ausführen dieses Codes steigt der reservierte Speicher für den Prozess kontinuierlich an und ist innerhalb weniger Minuten auf ein paar Gigabyte.</p>
<p>Gruß veryxRV</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1366689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1366689</guid><dc:creator><![CDATA[veryxRV]]></dc:creator><pubDate>Mon, 17 Sep 2007 05:18:33 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 05:24:25 GMT]]></title><description><![CDATA[<p>veryxRV schrieb:</p>
<blockquote>
<p>Kann mir jemand sagen, warum der reservierte Speicher bei folgendem Codeausschnitt nicht freigegeben wird?</p>
</blockquote>
<p>Warum sollte er freigegeben werden? Zum Freigeben findet sich nichts im Code. Da ist nur ein new, kein delete. Schönes Speicherleck.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1366690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1366690</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 17 Sep 2007 05:24:25 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 11:22:41 GMT]]></title><description><![CDATA[<p>Dein Code sieht übrigens kopiert aus.<br />
Versuch dich erstmal an leichte Sachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1366846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1366846</guid><dc:creator><![CDATA[pivke]]></dc:creator><pubDate>Mon, 17 Sep 2007 11:22:41 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 12:31:01 GMT]]></title><description><![CDATA[<p>Vor alem verstehe ich nicht den Sinn, der hier ein durch new allokierter Buffer hat. Wenn es um einen Pfad geht, häte sein Zeiger auf einen Buffer mit der Größe _MAX_PATH auch genügt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1366915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1366915</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 17 Sep 2007 12:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 12:35:10 GMT]]></title><description><![CDATA[<p>Wie MFK schon gesagt hat,<br />
das muss New sein, nicht delete -.-&quot;<br />
Ist doch auch eig. verständlich^^<br />
Aber trotzdem wünsch ich dir viel Erfolg bei deinem Projekt <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/1366919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1366919</guid><dc:creator><![CDATA[pivke]]></dc:creator><pubDate>Mon, 17 Sep 2007 12:35:10 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 12:52:46 GMT]]></title><description><![CDATA[<p>pivke schrieb:</p>
<blockquote>
<p>Dein Code sieht übrigens kopiert aus.<br />
Versuch dich erstmal an leichte Sachen.</p>
</blockquote>
<p>Nein, ist alles auf meinem Mist gewachsen. Ist ja auch nicht so, als wäre ich Anfänger, nur wie schwer zu erkennen ist, habe ich vom Umgang mit Speicher kaum Ahnung.</p>
<p>pivke schrieb:</p>
<blockquote>
<p>Wie MFK schon gesagt hat,<br />
das muss New sein, nicht delete -.-&quot;<br />
Ist doch auch eig. verständlich^^<br />
Aber trotzdem wünsch ich dir viel Erfolg bei deinem Projekt <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>
</blockquote>
<p>Na was denn jetzt? <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 dachte nur, der Speicher wird automatisch wieder freigegeben, weil er durch das beenden der Funktion seine Gültigkeit verliert... <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="😕"
    /> Wie soll man das auch anders machen? Ich kann die Variable ja schlecht zurückgeben, wenn ich sie vorher gelöscht habe <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/1366938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1366938</guid><dc:creator><![CDATA[veryxRV]]></dc:creator><pubDate>Mon, 17 Sep 2007 12:52:46 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 12:49:58 GMT]]></title><description><![CDATA[<p>Ich spiel jetzt mal linker.<br />
Hier findest du bestimmt auh was über Binren Speicher.<br />
<a href="http://www.robsite.de" rel="nofollow">www.robsite.de</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1366943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1366943</guid><dc:creator><![CDATA[pivke]]></dc:creator><pubDate>Mon, 17 Sep 2007 12:49:58 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 18:48:26 GMT]]></title><description><![CDATA[<p>Also: Der Rückgabewert von FILEHANDLER::GetPathFromJobIni ist mit</p>
<pre><code class="language-cpp">delete [] mein_wert;
</code></pre>
<p>freizugeben.</p>
<p>Wenn du kein Bock auf diese Speicherfreigabe hast, dann solltest du</p>
<pre><code class="language-cpp">TCHAR * cBuffer= new TCHAR[MAX_PATH];
</code></pre>
<p>umwandeln in</p>
<pre><code class="language-cpp">static TCHAR cBuffer[MAX_PATH] = {0};
</code></pre>
<p><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/1367257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367257</guid><dc:creator><![CDATA[a]]></dc:creator><pubDate>Mon, 17 Sep 2007 18:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 18:57:36 GMT]]></title><description><![CDATA[<p>Okay danke <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>An welcher Stelle muss ich denn das delete anbringen? Nach dem return macht ja keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367260</guid><dc:creator><![CDATA[veryxRV]]></dc:creator><pubDate>Mon, 17 Sep 2007 18:57:36 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 18:59:54 GMT]]></title><description><![CDATA[<p>Wenn Du einen Zeiger so returnierst in der aufrufenden Funktion, wo sonst?<br />
Deshlab mach wie ich es gesagt habe. Übergib einen entsprechenden Zeiger auf einen TCHAR Array der Größe _MAX_PATH und gut ists!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367262</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 17 Sep 2007 18:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 19:12:18 GMT]]></title><description><![CDATA[<p>Du rufst GetPathFromJobIni auf und wenn du den Rückgabewert nicht mehr brauchst, löschst du ihn; bspw.:</p>
<pre><code class="language-cpp">TCHAR *pszValue = GetPathFromJobIni (1, TRUE);
...
// Mache irgendetwas mit pszValue
...
delete [] pszValue;
</code></pre>
<p>Martins Lösung ist typischer für die WinApi:</p>
<pre><code class="language-cpp">// Deklaration
void GetPathFromJobIni (int i, BOOL bGetFromDone, TCHAR *pBuffer, int nMaxBuffer);

// Aufrufen:
TCHAR buffer[MAX_PATH] = {0};

GetPathFromJobIni (1, TRUE, buffer, MAX_PATH);
...
// Mache irgendetwas mit buffer
...
</code></pre>
<p>Dann entfernst du die Definition von &quot;cBuffer&quot; aus der Methode &quot;GetPathFromJobIni&quot; und ersetzt die restlichen &quot;cBuffer&quot; durch &quot;pBuffer&quot; (=&gt; s. neue Übergabeargumente)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367269</guid><dc:creator><![CDATA[a]]></dc:creator><pubDate>Mon, 17 Sep 2007 19:12:18 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Mon, 17 Sep 2007 20:42:40 GMT]]></title><description><![CDATA[<p>Okay vielen Dank soweit, ich werde morgen mal schauen, wie ich damit zurechtkomme! <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/1367327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367327</guid><dc:creator><![CDATA[veryxRV]]></dc:creator><pubDate>Mon, 17 Sep 2007 20:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Tue, 18 Sep 2007 14:01:09 GMT]]></title><description><![CDATA[<p>Gut, das funktioniert soweit <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="🙂"
    /> Aber eine Frage habe ich noch: Wie kann ich ganze Instanzen von Klassen wieder freigeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367785</guid><dc:creator><![CDATA[veryxRV]]></dc:creator><pubDate>Tue, 18 Sep 2007 14:01:09 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Wed, 19 Sep 2007 15:25:25 GMT]]></title><description><![CDATA[<p>Keine Idee?</p>
<p>Ich habe eine Klasse erstellt, die diverse Pointer enthält, die wieder freigegeben müssen. Ich würde aber gerne die gesamte Klasse freigeben, anstatt jeden Wert einzeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368642</guid><dc:creator><![CDATA[veryxRV]]></dc:creator><pubDate>Wed, 19 Sep 2007 15:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Wed, 19 Sep 2007 15:32:35 GMT]]></title><description><![CDATA[<p>geht nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368648</guid><dc:creator><![CDATA[tenchou]]></dc:creator><pubDate>Wed, 19 Sep 2007 15:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Wed, 19 Sep 2007 16:40:50 GMT]]></title><description><![CDATA[<p>veryxRV schrieb:</p>
<blockquote>
<p>Keine Idee?</p>
<p>Ich habe eine Klasse erstellt, die diverse Pointer enthält, die wieder freigegeben müssen. Ich würde aber gerne die gesamte Klasse freigeben, anstatt jeden Wert einzeln.</p>
</blockquote>
<p>Schon mal was von einem Destruktor gehört?<br />
Ansonsten muss man sehen was und wie Du das mit den Zeigern machst.<br />
Also zeige und Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368708</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 19 Sep 2007 16:40:50 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher wird nicht freigegeben on Wed, 19 Sep 2007 19:09:28 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13498">@veryxRV</a>: std::auto_ptr, boost::scoped_ptr, boost::shared_ptr, ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1368801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1368801</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 19 Sep 2007 19:09:28 GMT</pubDate></item></channel></rss>