<?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[Heapfehler]]></title><description><![CDATA[<p>Hey,<br />
Ich habe einen heapfehler beim erstellen einiger Textdokumente.<br />
MCD_STR ist ein spezieller String von CMarkup, wie CString.</p>
<pre><code class="language-cpp">class CDienst{
private:
static const int Anz_Dienste = 14;
MCD_STR FileNames[Anz_Dienste];

public:
CDienst();
void create_Files();
};

CDienst::CDienst(){
	FileNames[0]  = L&quot;We_Pl_f&quot;;			
	FileNames[1]  = L&quot;We_Pl_g&quot;;			
	FileNames[2]  = L&quot;Solar_f&quot;;			
	FileNames[3]  = L&quot;Luftt_f&quot;;			
	FileNames[4]  = L&quot;Luftd_g&quot;;			
	FileNames[5]  = L&quot;Windp_f&quot;;			
	FileNames[6]  = L&quot;Windp_g&quot;;			
	FileNames[7]  = L&quot;Nebel_m&quot;;			
	FileNames[8]  = L&quot;BoFro_m&quot;;		
	FileNames[9]  = L&quot;BlEis_m&quot;;			
	FileNames[10] = L&quot;Boeen_m&quot;;			
	FileNames[11] = L&quot;StReg_m&quot;;			
	FileNames[12] = L&quot;Hitze_m&quot;;		
	FileNames[13] = L&quot;Kaelt_m&quot;;			
}

void CDienst::create_Files(){
	for ( int i = 0; i &lt; Anz_Dienste; i++ ){
		if(Dienste[i] == true){
			std::fstream File(FileNames[i] + &quot;.dat&quot;, std::ios::app|std::ios::out|std::ios::in);
			if(File.fail()){
				Error_Datei();
				return;
			}
			Save_ID(FileNames[i]);
			File.close();
		}
	}
}
}
</code></pre>
<p>In der Zeile von fstream kann ich immer noch halten, nur wenn ich auf weiter drücke kommt dann:<br />
Haltepunkt ausgelöst. Kann auf Beschädigung des Heaps zurückzuführen sein.</p>
<p>Wäre über jede Hilfe dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297155/heapfehler</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 14:32:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297155.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Dec 2011 09:31:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Heapfehler on Tue, 20 Dec 2011 09:31:51 GMT]]></title><description><![CDATA[<p>Hey,<br />
Ich habe einen heapfehler beim erstellen einiger Textdokumente.<br />
MCD_STR ist ein spezieller String von CMarkup, wie CString.</p>
<pre><code class="language-cpp">class CDienst{
private:
static const int Anz_Dienste = 14;
MCD_STR FileNames[Anz_Dienste];

public:
CDienst();
void create_Files();
};

CDienst::CDienst(){
	FileNames[0]  = L&quot;We_Pl_f&quot;;			
	FileNames[1]  = L&quot;We_Pl_g&quot;;			
	FileNames[2]  = L&quot;Solar_f&quot;;			
	FileNames[3]  = L&quot;Luftt_f&quot;;			
	FileNames[4]  = L&quot;Luftd_g&quot;;			
	FileNames[5]  = L&quot;Windp_f&quot;;			
	FileNames[6]  = L&quot;Windp_g&quot;;			
	FileNames[7]  = L&quot;Nebel_m&quot;;			
	FileNames[8]  = L&quot;BoFro_m&quot;;		
	FileNames[9]  = L&quot;BlEis_m&quot;;			
	FileNames[10] = L&quot;Boeen_m&quot;;			
	FileNames[11] = L&quot;StReg_m&quot;;			
	FileNames[12] = L&quot;Hitze_m&quot;;		
	FileNames[13] = L&quot;Kaelt_m&quot;;			
}

void CDienst::create_Files(){
	for ( int i = 0; i &lt; Anz_Dienste; i++ ){
		if(Dienste[i] == true){
			std::fstream File(FileNames[i] + &quot;.dat&quot;, std::ios::app|std::ios::out|std::ios::in);
			if(File.fail()){
				Error_Datei();
				return;
			}
			Save_ID(FileNames[i]);
			File.close();
		}
	}
}
}
</code></pre>
<p>In der Zeile von fstream kann ich immer noch halten, nur wenn ich auf weiter drücke kommt dann:<br />
Haltepunkt ausgelöst. Kann auf Beschädigung des Heaps zurückzuführen sein.</p>
<p>Wäre über jede Hilfe dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159127</guid><dc:creator><![CDATA[Gast1000]]></dc:creator><pubDate>Tue, 20 Dec 2011 09:31:51 GMT</pubDate></item><item><title><![CDATA[Reply to Heapfehler on Tue, 20 Dec 2011 09:44:51 GMT]]></title><description><![CDATA[<p>Wie sieht denn der Operator+ von MCD_STR aus? Oder gibt es nur einen operator const char*?<br />
Dann gibt es nämlich bei</p>
<pre><code class="language-cpp">FileNames[i] + &quot;.dat&quot;
</code></pre>
<p>Probleme-&gt;besser den Umweg über einen std::string gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159132</guid><dc:creator><![CDATA[Hmmh]]></dc:creator><pubDate>Tue, 20 Dec 2011 09:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to Heapfehler on Tue, 20 Dec 2011 10:04:07 GMT]]></title><description><![CDATA[<p>ok, ich habe das ganze noch einmal mit CString (denke, dass wird ungefähr das selbe sein wie std::string) versucht und die Datei(von VC++) hat sich verändert, in der der Fehler auftritt, aber der Fehler leider immer noch der selbe.</p>
<p>Ich habe es außerdem noch mal versucht, wenn ich .dat gleich bei den Namensdefinitionen aufrufe, somit steht jetzt nur noch da</p>
<pre><code class="language-cpp">std::fstream File(FileNames[i], std::ios::app|std::ios::out|std::ios::in);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2159137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159137</guid><dc:creator><![CDATA[Gast1000]]></dc:creator><pubDate>Tue, 20 Dec 2011 10:04:07 GMT</pubDate></item><item><title><![CDATA[Reply to Heapfehler on Tue, 20 Dec 2011 10:09:19 GMT]]></title><description><![CDATA[<p>MCD_STR kann, so sagt mir google, entweder std::string, std::wstring oder CString sein (je nach Projekttyp). Welcher es bei dir ist, wäre spannend zu wissen.</p>
<p>So oder so stößt es mir aber komisch auf, dass du die Strings hier</p>
<pre><code class="language-cpp">CDienst::CDienst(){
    FileNames[0]  = L&quot;We_Pl_f&quot;;  
    ...
</code></pre>
<p>mit wide strings initialisiert, aber hier</p>
<pre><code class="language-cpp">FileNames[i] + &quot;.dat&quot;
</code></pre>
<p>einen normalen anzuhängen versuchst. Auch hat basic_fstream laut Standard nur einen Konstruktor für char const *, nicht für basic_string&lt;irgendwas&gt; und schon gar nicht für CString. Was dein Compiler daraus macht, kann ich dir ohne weitere Informationen nicht sagen.</p>
<p>Werden bei der Kompilation irgendwelche Warnungen ausgegeben? Das könnte man in so einem Zusammenhang fast erwarten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159139</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 20 Dec 2011 10:09:19 GMT</pubDate></item><item><title><![CDATA[Reply to Heapfehler on Tue, 20 Dec 2011 10:31:14 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Windows hat einen Haltepunkt in Projekt.exe ausgelöst.</p>
<p>Dies kann auf eine Beschädigung des Heaps zurückzuführen sein, die auf ein Problem in Projekt.exe oder in einer der geladenen DLLs hinweist.</p>
<p>Dies kann auch darauf zurückzuführen sein, dass der Benutzer F12 drückt, während Projekt.exe den Fokus hat.</p>
<p>Weitere Analyseinformationen finden Sie möglicherweise im Ausgabefenster. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<p>Aber F12 habe ich nicht gedrückt^^.</p>
<p>Desweiteren hält er in der Bib: tidtable.c<br />
in der Zeile:</p>
<pre><code class="language-cpp">PFLS_GETVALUE_FUNCTION flsGetValue = FLS_GETVALUE;
</code></pre>
<p>falls das jemanden etwas sagt.</p>
<p>Wenn ich auf weiter drücke, kommt die Fehlermeldung:<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Unbehandelte Ausnahme bei 0x77d0e653 in Projekt.exe: 0xC0000374: Ein Heap wurde beschädigt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159153</guid><dc:creator><![CDATA[Gast1000]]></dc:creator><pubDate>Tue, 20 Dec 2011 10:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to Heapfehler on Wed, 21 Dec 2011 07:28:13 GMT]]></title><description><![CDATA[<p>ok, ich habe jetzt einfach mal versucht, ein normales Textdokument zu erstellen sprich</p>
<p>std::fstream test(&quot;test.txt&quot;, std::ios::app|std::ios::out|std::ios::in);</p>
<p>in der create_Files();</p>
<p>Die Fehlermeldung bleibt die selbe, also habe ich mir gedacht, ich versuche das ganze auch mal in Main und dort funktioniert es. In der create_Files() funktioniert es nicht.<br />
Fehlermeldung bleibt die gleiche wie davor.</p>
<p>Kann es sein, dass ich beim aufruf von fstream in create_Files zu viel Tiefe habe(da ich den Fehler neulich schon mal hatte) oder dass der Heap einfach voll ist und er somit einen speicherfehler bekommt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159561</guid><dc:creator><![CDATA[Gast1000]]></dc:creator><pubDate>Wed, 21 Dec 2011 07:28:13 GMT</pubDate></item><item><title><![CDATA[Reply to Heapfehler on Wed, 21 Dec 2011 07:55:37 GMT]]></title><description><![CDATA[<p>Wenn der Heap voll wäre, müsste bad_alloc geschmissen werden. Was aber sein kann (und wahrscheinlich der Fall ist), ist, dass du dir irgendwo vorher per Buffer-Overflow den Heap zerschossen hast und es deshalb bei der Anforderung weiteren Speichers durch fstream zum Fehler kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159563</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 21 Dec 2011 07:55:37 GMT</pubDate></item><item><title><![CDATA[Reply to Heapfehler on Wed, 21 Dec 2011 11:12:48 GMT]]></title><description><![CDATA[<p>hm, Buffer-Overflow ist doch dann, wenn ich nicht genügend Speicherplatz reserviert habe(nehme ich jetzt mal an). Müsste er mir dann aber nicht einen Error ausgeben: Zugriffsverletzung bei Adresse ... usw. ?<br />
Bzw. das er mir gleich einen Error ausgibt.</p>
<p>Danke schon mal für die Hilfe bisher, jetzt weis ich, schon mal ungefähr, woran liegt^^.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159646</guid><dc:creator><![CDATA[Gast1000]]></dc:creator><pubDate>Wed, 21 Dec 2011 11:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to Heapfehler on Wed, 21 Dec 2011 14:48:03 GMT]]></title><description><![CDATA[<p>Ok, ich habe nach endlosen suchen endlich meinen Fehler gefunden. Es war ein Buffer-Overflow^^.</p>
<p>Vielen Dank für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159749</guid><dc:creator><![CDATA[Gast1000]]></dc:creator><pubDate>Wed, 21 Dec 2011 14:48:03 GMT</pubDate></item></channel></rss>