<?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[Speicherloch ifstream ??]]></title><description><![CDATA[<p>ich habe eine Funktion geschrieben, die prüft ob ein File existiert.<br />
Im Memorydump des Studios bekomme ich jedoch ein Speicherloch angezeigt das durch<br />
die open-Funktion von ifstream zu entstehen scheint.<br />
Ich kann mir nicht vorstellen das diese Funktion ein Leak hat, was ist falsch ?</p>
<p>hier der code</p>
<pre><code class="language-cpp">// mystring ist eine eigene Stringklasse
bool Global::Exist(mystring file) {
	bool bExist = false;

        // Konvertieren in char*
	char *pcFile = Global::Conv_pwc2pc(file);

  ifstream test;

	// hier entsteht wahrscheinlich ein Speicherloch 
	// mit dem VCStudio kann es lokalisiert werden indem z.B.
	// vorher ein Speicher der Größe X und nachher ein Speicher der Größe Y
	// reserviert wird der nicht freigegeben wird.
	// im MemoryDump ist dann zwischen den Speicherlöchern X und Y das 
	// Speicherloch zu sehen das durch diese Zeile erzeugt wird
	// der Code zum generieren der Speicherlöcher ist bewußt dringelassen, jedoch auskommentiert
	//new char[1051];
  test.open (pcFile);
	//new char[1052];

  if (test.is_open()) {
    if (test.good()){
			bExist = true;
		} 
    test.close();
  } else {
  }

	free(pcFile);

	return bExist;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/143041/speicherloch-ifstream</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 01:09:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143041.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Apr 2006 08:59:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherloch ifstream ?? on Wed, 05 Apr 2006 08:59:03 GMT]]></title><description><![CDATA[<p>ich habe eine Funktion geschrieben, die prüft ob ein File existiert.<br />
Im Memorydump des Studios bekomme ich jedoch ein Speicherloch angezeigt das durch<br />
die open-Funktion von ifstream zu entstehen scheint.<br />
Ich kann mir nicht vorstellen das diese Funktion ein Leak hat, was ist falsch ?</p>
<p>hier der code</p>
<pre><code class="language-cpp">// mystring ist eine eigene Stringklasse
bool Global::Exist(mystring file) {
	bool bExist = false;

        // Konvertieren in char*
	char *pcFile = Global::Conv_pwc2pc(file);

  ifstream test;

	// hier entsteht wahrscheinlich ein Speicherloch 
	// mit dem VCStudio kann es lokalisiert werden indem z.B.
	// vorher ein Speicher der Größe X und nachher ein Speicher der Größe Y
	// reserviert wird der nicht freigegeben wird.
	// im MemoryDump ist dann zwischen den Speicherlöchern X und Y das 
	// Speicherloch zu sehen das durch diese Zeile erzeugt wird
	// der Code zum generieren der Speicherlöcher ist bewußt dringelassen, jedoch auskommentiert
	//new char[1051];
  test.open (pcFile);
	//new char[1052];

  if (test.is_open()) {
    if (test.good()){
			bExist = true;
		} 
    test.close();
  } else {
  }

	free(pcFile);

	return bExist;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1030819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030819</guid><dc:creator><![CDATA[Rufus]]></dc:creator><pubDate>Wed, 05 Apr 2006 08:59:03 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch ifstream ?? on Wed, 05 Apr 2006 11:23:44 GMT]]></title><description><![CDATA[<p>Hallo Rufus,</p>
<p>beim Visual Studio .Net 2003 alias VC7 kann ich das von Dir geschilderte Verhalten nicht nachvollziehen. Welche Version benutzt Du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1030932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030932</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 05 Apr 2006 11:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch ifstream ?? on Wed, 05 Apr 2006 11:31:40 GMT]]></title><description><![CDATA[<p>Ich benutze Visual Studio 6.0!</p>
<p>Gruss Rufus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1030948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1030948</guid><dc:creator><![CDATA[Rufus]]></dc:creator><pubDate>Wed, 05 Apr 2006 11:31:40 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch ifstream ?? on Wed, 05 Apr 2006 13:13:25 GMT]]></title><description><![CDATA[<p>Mit welchem Befehl wird für pcFile speicher reserviert und mit welchem Befehl gibst du ihn wieder frei?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1031069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1031069</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Wed, 05 Apr 2006 13:13:25 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch ifstream ?? on Wed, 05 Apr 2006 13:58:41 GMT]]></title><description><![CDATA[<p>Hallo Rufus,</p>
<p>es wird tatsächlich Speicher allokiert, der vor dem return im main() noch nicht wieder frei gegeben wurde. Auch dann wenn das in irgendeinem Unterprogramm stattfindet.<br />
Aber ich meine es handelt sich um 'einmaligen'Speicher (einmal 512 und einmal 16 Byte). D.h. es ist egal wie oft Du file.open() wiederholst oder wie viele ofstream-Objekte vorhanden sind, es wird nicht mehr Speicher allokiert. Wahrscheinlich interne <a href="http://de.wikipedia.org/wiki/Einzelst%C3%BCck_%28Entwurfsmuster%29" rel="nofollow">Singletons</a>, die nie wieder gelöscht werden.<br />
Setze vor Deinen Code (vielleicht im main()) mal</p>
<pre><code class="language-cpp">int main()
{
    {
        std::ifstream file;
        file.open( &quot;input.txt&quot; ); // irgendeine Datei
    }
    // usw...
    return 0;
}
</code></pre>
<p>Dann sollte zwischen den Speicherlöchern X und Y (s. Dein Posting) kein Memory Leak mehr zu finden sein.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1031123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1031123</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 05 Apr 2006 13:58:41 GMT</pubDate></item></channel></rss>