<?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[probleme mit heap]]></title><description><![CDATA[<p>ich habe anscheinend probleme mit dem heap:</p>
<pre><code class="language-cpp">HEAP: Free Heap block 8b1150 modified at 8b11d0 after it was freed
</code></pre>
<p>in meiner applikation habe ich auch ziemlich viele memcpy aufrufe und unmengen pointer. von daher ist es etwas schwierig nachzuvollziehen wo das problem genau liegt.</p>
<p>nach einiger suche bin ich dann auf folgendes gestossen:<br />
<a href="http://blogs.msdn.com/greggm/archive/2004/04/16/114893.aspx" rel="nofollow">http://blogs.msdn.com/greggm/archive/2004/04/16/114893.aspx</a></p>
<p>darin steht, dass es ein tool von micro... namens <strong>pageheap.exe</strong> gibt.<br />
und weiter bei micro... heißt es (<a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q286470#XSLTH3131121122120121120120" rel="nofollow">http://support.microsoft.com/default.aspx?scid=kb;en-us;Q286470#XSLTH3131121122120121120120</a>)<br />
es wäre bei den <strong>debuggintools</strong> dabei.</p>
<p>ist es aber nicht. ich habe auch mit custom alles angewählt.</p>
<p>weiss jemand wo ich sonst dieses tool bekommen kann?</p>
<p>oder habt ihr noch andere tips für die eingrenzung des problems?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/134354/probleme-mit-heap</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 16:26:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/134354.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Jan 2006 14:38:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to probleme mit heap on Wed, 25 Jan 2006 14:38:40 GMT]]></title><description><![CDATA[<p>ich habe anscheinend probleme mit dem heap:</p>
<pre><code class="language-cpp">HEAP: Free Heap block 8b1150 modified at 8b11d0 after it was freed
</code></pre>
<p>in meiner applikation habe ich auch ziemlich viele memcpy aufrufe und unmengen pointer. von daher ist es etwas schwierig nachzuvollziehen wo das problem genau liegt.</p>
<p>nach einiger suche bin ich dann auf folgendes gestossen:<br />
<a href="http://blogs.msdn.com/greggm/archive/2004/04/16/114893.aspx" rel="nofollow">http://blogs.msdn.com/greggm/archive/2004/04/16/114893.aspx</a></p>
<p>darin steht, dass es ein tool von micro... namens <strong>pageheap.exe</strong> gibt.<br />
und weiter bei micro... heißt es (<a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q286470#XSLTH3131121122120121120120" rel="nofollow">http://support.microsoft.com/default.aspx?scid=kb;en-us;Q286470#XSLTH3131121122120121120120</a>)<br />
es wäre bei den <strong>debuggintools</strong> dabei.</p>
<p>ist es aber nicht. ich habe auch mit custom alles angewählt.</p>
<p>weiss jemand wo ich sonst dieses tool bekommen kann?</p>
<p>oder habt ihr noch andere tips für die eingrenzung des problems?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976026</guid><dc:creator><![CDATA[asr]]></dc:creator><pubDate>Wed, 25 Jan 2006 14:38:40 GMT</pubDate></item><item><title><![CDATA[Reply to probleme mit heap on Wed, 25 Jan 2006 14:46:22 GMT]]></title><description><![CDATA[<p>Du hast einen Heap-Bereich verändert, nachdem er (per delete) freigegeben wurde - um mal die Fehlermeldung zu übersetzen.</p>
<p>Das könnte damit zusammenhängen, daß du eine Klasse mit dynamischem Speicher verwendest und dort keinen passenden CopyCtor und Zuweisungsoperator definiert hast:</p>
<pre><code class="language-cpp">class test
{
  char* val;
public:
  test() : val(new char[10]) {}
  ~test() {delete[] val;}
  void set_val(int p, char c) {val[p]=c;}
  char get_val(int p) {return val[p];}
}

int main()
{
  test t1;//ruft Standard-Destruktor auf
  if(t1.get_val(0)==0)
  {
    test t2=t1;//Default-CopyCtor -&gt; t2.val = t1.val
    ...
  }//t2.~test() - löscht Datenbereich hinter t2.val (und t1.val)
  t1.set_val(1,'j');//&lt;-CRASH
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/976034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976034</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 25 Jan 2006 14:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to probleme mit heap on Wed, 25 Jan 2006 15:21:23 GMT]]></title><description><![CDATA[<p>naja, ich mach sowas in der art:</p>
<pre><code class="language-cpp">char* pointerArray  = new char[256];
char* pointerArray2 = new char[512];

...

if(pointerArray)
{
	delete [] pointerArray;
	pointerArray = 0;

}

pointerArray = pointerArray2;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/976075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976075</guid><dc:creator><![CDATA[asr]]></dc:creator><pubDate>Wed, 25 Jan 2006 15:21:23 GMT</pubDate></item><item><title><![CDATA[Reply to probleme mit heap on Wed, 25 Jan 2006 15:30:04 GMT]]></title><description><![CDATA[<p>Soweit sieht es noch gut aus - aber wenn du jetzt auf einen dieser Pointer delete anwendest, hast du ein Problem:</p>
<pre><code class="language-cpp">char* pointerArray  = new char[256];
char* pointerArray2 = new char[512];

...

if(pointerArray)
{
    delete [] pointerArray;
    pointerArray = 0;
}

pointerArray = pointerArray2;

...

if(pointerArray)
{
    delete [] pointerArray;
    pointerArray = 0;
}

...

strcpy(pointerArray2[0],&quot;Hallo, Heap!&quot;);// CRASH
</code></pre>
<p>Nach deinem Programmfragment hast du nur noch <strong>EINEN</strong> Heap-Sektor, auf den beide Pointer verweisen - wenn du den löschst, zeigen beide Pointer auf ungültige Daten.</p>
<p>PS: Sei froh, daß du darauf hingewiesen wurdest - schlimmer wird es, wenn du auf diese Weise Daten zerstörst, die du inzwischen neu angelegt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976088</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 25 Jan 2006 15:30:04 GMT</pubDate></item><item><title><![CDATA[Reply to probleme mit heap on Thu, 26 Jan 2006 13:26:40 GMT]]></title><description><![CDATA[<p>o.k.<br />
noch konkreter: ich möchte daten zu einem speicherbereich hinzufügen.<br />
wenn dieser voll ist</p>
<pre><code class="language-cpp">// pointer Array wird am anfang einmal GLOBAL angelegt
char* pointerArray  = new char[256];

void fuegWasHinzu(void* vonWo, int wieViel)
{

	while(nochPlatz &lt; wieViel)
	{

		char* pointerArray2 = new char[LENPOINTERARRAY+512];

		memcpy(pointerArray2, pointerArray, 256);

		if(pointerArray)
		{
			delete [] pointerArray;
			pointerArray = 0;

		}

		pointerArray = pointerArray2;

	}

	strcpy(pointerArray, vonWo, wieViel);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/976935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976935</guid><dc:creator><![CDATA[asr]]></dc:creator><pubDate>Thu, 26 Jan 2006 13:26:40 GMT</pubDate></item><item><title><![CDATA[Reply to probleme mit heap on Thu, 26 Jan 2006 13:34:35 GMT]]></title><description><![CDATA[<p>Mal davon abgesehen, daß du so eine Endlosschleife erzeugst (nochPlatz wird in der Schleife nicht erhöht), spätestens beim zweiten Überlauf die Hälfte deiner Daten kompostierst und strcpy die bisher belegten Daten überschreibt - blicke ich schon kaum noch durch deine Speicherverwaltung durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976941</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Thu, 26 Jan 2006 13:34:35 GMT</pubDate></item><item><title><![CDATA[Reply to probleme mit heap on Thu, 26 Jan 2006 13:40:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">if(pointerArray)
        {
            delete [] pointerArray;
            pointerArray = 0;

        }
</code></pre>
<p>BTW: Delete[] überprüft automatisch ob es sich um einen 0 Zeiger handelt.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/976948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/976948</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Thu, 26 Jan 2006 13:40:10 GMT</pubDate></item></channel></rss>