<?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[Assertion: BLOCK_TYPE_IS_VALID]]></title><description><![CDATA[<p>Ich schreibe gerade eine Lade-/Speicher-Funktion, dass speichern funktioniert fehlerlos, beim Laden werden dann auch die richtigen Dateien angezeigt. Beim beenden des Programms (beim Debuggen also beim return 0 der Main-Funktion bekomme ich eine &quot;Assertion failed&quot; Meldung.</p>
<blockquote>
<p>File: dbgheap.c<br />
Line: 1017<br />
Expression: _BLOCK_TYPE_IS_VALID(pHeap-&gt;nBlockUse)</p>
</blockquote>
<p>Der Fehler müsste in der folgenden Funktion zu finden sein, da wenn ich den markierten Teil auskommentiere die Meldung nicht mehr kommt.</p>
<pre><code class="language-cpp">int LoadGame(FMDatabase* fmDB) 
{
fstream file(&quot;test.txt&quot;,ios::in|ios::binary);
DBHeader temp;
file.seekg(0);
file.read((char*)&amp;temp,sizeof(temp));

int i = 0;
//---------------Fehlerhafter Teil------------------------
League templ;
for(i = 0; i &lt; temp.leagues;i++)
{
file.read((char*)&amp;templ,sizeof(templ));
cout &lt;&lt; &quot;Loaded League: &quot;&lt;&lt;templ.name.c_str() &lt;&lt; endl;
}

Team tempt;
for(i = 0; i &lt; temp.teams;i++)
{
file.read((char*)&amp;tempt,sizeof(tempt));
cout &lt;&lt; &quot;Loaded Team: &quot;&lt;&lt;tempt.name.c_str() &lt;&lt; endl;
}
//---------------Ende fehlerhafter Teil----------------------
file.close();
return 0;
};
</code></pre>
<p>Im Internet steht nur dass die Meldung kommt wenn man versucht Speicher frei zu geben denn einem nicht gehört. Kann mir jemand sagen wo das Problem liegt? Speicher gebe ich ja keinen frei und ich wüsste nicht wo das Programm beim Speicher freigeben scheitern könnte. <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219541/assertion-block_type_is_valid</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 02:27:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219541.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Aug 2008 16:24:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Assertion: BLOCK_TYPE_IS_VALID on Mon, 04 Aug 2008 16:24:07 GMT]]></title><description><![CDATA[<p>Ich schreibe gerade eine Lade-/Speicher-Funktion, dass speichern funktioniert fehlerlos, beim Laden werden dann auch die richtigen Dateien angezeigt. Beim beenden des Programms (beim Debuggen also beim return 0 der Main-Funktion bekomme ich eine &quot;Assertion failed&quot; Meldung.</p>
<blockquote>
<p>File: dbgheap.c<br />
Line: 1017<br />
Expression: _BLOCK_TYPE_IS_VALID(pHeap-&gt;nBlockUse)</p>
</blockquote>
<p>Der Fehler müsste in der folgenden Funktion zu finden sein, da wenn ich den markierten Teil auskommentiere die Meldung nicht mehr kommt.</p>
<pre><code class="language-cpp">int LoadGame(FMDatabase* fmDB) 
{
fstream file(&quot;test.txt&quot;,ios::in|ios::binary);
DBHeader temp;
file.seekg(0);
file.read((char*)&amp;temp,sizeof(temp));

int i = 0;
//---------------Fehlerhafter Teil------------------------
League templ;
for(i = 0; i &lt; temp.leagues;i++)
{
file.read((char*)&amp;templ,sizeof(templ));
cout &lt;&lt; &quot;Loaded League: &quot;&lt;&lt;templ.name.c_str() &lt;&lt; endl;
}

Team tempt;
for(i = 0; i &lt; temp.teams;i++)
{
file.read((char*)&amp;tempt,sizeof(tempt));
cout &lt;&lt; &quot;Loaded Team: &quot;&lt;&lt;tempt.name.c_str() &lt;&lt; endl;
}
//---------------Ende fehlerhafter Teil----------------------
file.close();
return 0;
};
</code></pre>
<p>Im Internet steht nur dass die Meldung kommt wenn man versucht Speicher frei zu geben denn einem nicht gehört. Kann mir jemand sagen wo das Problem liegt? Speicher gebe ich ja keinen frei und ich wüsste nicht wo das Programm beim Speicher freigeben scheitern könnte. <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559138</guid><dc:creator><![CDATA[Hello]]></dc:creator><pubDate>Mon, 04 Aug 2008 16:24:07 GMT</pubDate></item><item><title><![CDATA[Reply to Assertion: BLOCK_TYPE_IS_VALID on Mon, 04 Aug 2008 17:10:38 GMT]]></title><description><![CDATA[<p>Du kannst komplexe Klassen nicht einfach so speichern/laden. Du musst sie erst serialisieren.</p>
<p>Stell dir die Klasse string einmal vor. Sie hat einen char* auf den Inhalt und einen int fuer die laenge. Wenn du das nun per file.write() in die Datei schreibst, schreibst du die Adresse auf die der char* schreibt und die laenge in die Datei.</p>
<p>Aber du schreibst nie den string selber...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559164</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 04 Aug 2008 17:10:38 GMT</pubDate></item><item><title><![CDATA[Reply to Assertion: BLOCK_TYPE_IS_VALID on Mon, 04 Aug 2008 17:31:14 GMT]]></title><description><![CDATA[<p>Hmm.... ich glaube ich verstehe was du meinst.</p>
<p>Das heisst ich muss also den String-Inhalt in einen char[] laden und kann in dann so speichern? Und das müsste ich ja dann mit jedem Pointer in der Klasse machen, wenn ich das richtig verstehe? Oh, da wartet ja einige arbeit auf mich. <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/1559180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559180</guid><dc:creator><![CDATA[Hello]]></dc:creator><pubDate>Mon, 04 Aug 2008 17:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to Assertion: BLOCK_TYPE_IS_VALID on Mon, 04 Aug 2008 17:33:11 GMT]]></title><description><![CDATA[<p>Hello schrieb:</p>
<blockquote>
<p>Das heisst ich muss also den String-Inhalt in einen char[] laden und kann in dann so speichern? Und das müsste ich ja dann mit jedem Pointer in der Klasse machen, wenn ich das richtig verstehe? Oh, da wartet ja einige arbeit auf mich. <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>
</blockquote>
<p>du musst serialisieren. such mal danach.</p>
<p>das einfachste ist den operator&lt;&lt; und operator&gt;&gt; zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559182</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 04 Aug 2008 17:33:11 GMT</pubDate></item><item><title><![CDATA[Reply to Assertion: BLOCK_TYPE_IS_VALID on Mon, 04 Aug 2008 18:12:07 GMT]]></title><description><![CDATA[<p>Wie sehen DBHeader League und Team aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559194</guid><dc:creator><![CDATA[singsingsing]]></dc:creator><pubDate>Mon, 04 Aug 2008 18:12:07 GMT</pubDate></item><item><title><![CDATA[Reply to Assertion: BLOCK_TYPE_IS_VALID on Mon, 04 Aug 2008 18:32:50 GMT]]></title><description><![CDATA[<p>DBHeader scheint kein Problem zu sein, besteht ja auch nur aus integers.</p>
<pre><code class="language-cpp">struct DBHeader
{
unsigned short int version;
unsigned int players;
unsigned int teams;
unsigned short int leagues;
unsigned int games;
};
</code></pre>
<p>Team hingegen ist schon komplexer und scheint das eigentliche Probllem zu sein:</p>
<pre><code class="language-cpp">class Team
{
	public:
	unsigned int ID;
	std::string name;
	std::string wappen;
	unsigned short int iTrainingTyp;

	Team(): ID(0) {}
        Team(std::string strName, std::string strWappen):
        ID(0),name(strName),wappen(strWappen) {}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1559199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559199</guid><dc:creator><![CDATA[Hello]]></dc:creator><pubDate>Mon, 04 Aug 2008 18:32:50 GMT</pubDate></item><item><title><![CDATA[Reply to Assertion: BLOCK_TYPE_IS_VALID on Mon, 04 Aug 2008 18:38:08 GMT]]></title><description><![CDATA[<p>Ja, std::string kannst du nicht so speichern. Da musst du ne struktur mit char arrays mit fester größe nehmen oder dir was bauen um std::strings richtig rauszuschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559202</guid><dc:creator><![CDATA[singsingsing]]></dc:creator><pubDate>Mon, 04 Aug 2008 18:38:08 GMT</pubDate></item><item><title><![CDATA[Reply to Assertion: BLOCK_TYPE_IS_VALID on Mon, 04 Aug 2008 18:41:02 GMT]]></title><description><![CDATA[<p>Vielen dank für eure Hilfe. <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/1559203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559203</guid><dc:creator><![CDATA[Hello]]></dc:creator><pubDate>Mon, 04 Aug 2008 18:41:02 GMT</pubDate></item></channel></rss>