<?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[&amp;quot;Heap Corruption&amp;quot; warum?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin in meinem Programm auf folgendes Problem gestoßen:</p>
<pre><code class="language-cpp">HEAP CORRUPTION DETECTED: after Normal block (#2209) at 0x00ABD360.
CRT detected that the application wrote to memory after end of heap buffer.
Normal located at 0x00ABD360 is 24 bytes long.
</code></pre>
<p>Ich habe auch die Stelle gefunden, welche dieses Problem verursacht.</p>
<pre><code class="language-cpp">if (!exists){
	    vec.push_back(new RedirectableLocalFolder(drive));
	    RedirectableObject **obj = new RedirectableObject*[vec.size()+1];
	    obj = enum_list;
	    unsigned int i;
	    for (i = 0; i &lt; vec.size(); i++) {
		obj[i] = vec[i];
	    }
	    // mark new end
	    assert(_CrtCheckMemory());
	    obj[i] = NULL; // HEAP Corruption
	    assert(_CrtCheckMemory());
	}
    }
</code></pre>
<p>Nur leider versteh ich nicht wieso das Problem auftritt. <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="😕"
    /> obj[0] wird der Vektor vec[0] und obj[1] NULL zugewiesen. Speicher sollte meiner Meinung nach auch genügend allociert wurden sein. Wenn ich</p>
<pre><code class="language-cpp">obj[i] = NULL; // HEAP Corruption
</code></pre>
<p>nicht ausführen lasse, tritt der Fehler nicht auf.</p>
<p>Kann mir das mal bitte jemand erklären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> ??<br />
Vielen Dank</p>
<p>Robert</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188910/quot-heap-corruption-quot-warum</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 23:04:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188910.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Aug 2007 08:55:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;quot;Heap Corruption&amp;quot; warum? on Mon, 06 Aug 2007 08:55:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin in meinem Programm auf folgendes Problem gestoßen:</p>
<pre><code class="language-cpp">HEAP CORRUPTION DETECTED: after Normal block (#2209) at 0x00ABD360.
CRT detected that the application wrote to memory after end of heap buffer.
Normal located at 0x00ABD360 is 24 bytes long.
</code></pre>
<p>Ich habe auch die Stelle gefunden, welche dieses Problem verursacht.</p>
<pre><code class="language-cpp">if (!exists){
	    vec.push_back(new RedirectableLocalFolder(drive));
	    RedirectableObject **obj = new RedirectableObject*[vec.size()+1];
	    obj = enum_list;
	    unsigned int i;
	    for (i = 0; i &lt; vec.size(); i++) {
		obj[i] = vec[i];
	    }
	    // mark new end
	    assert(_CrtCheckMemory());
	    obj[i] = NULL; // HEAP Corruption
	    assert(_CrtCheckMemory());
	}
    }
</code></pre>
<p>Nur leider versteh ich nicht wieso das Problem auftritt. <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="😕"
    /> obj[0] wird der Vektor vec[0] und obj[1] NULL zugewiesen. Speicher sollte meiner Meinung nach auch genügend allociert wurden sein. Wenn ich</p>
<pre><code class="language-cpp">obj[i] = NULL; // HEAP Corruption
</code></pre>
<p>nicht ausführen lasse, tritt der Fehler nicht auf.</p>
<p>Kann mir das mal bitte jemand erklären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> ??<br />
Vielen Dank</p>
<p>Robert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339397</guid><dc:creator><![CDATA[rona]]></dc:creator><pubDate>Mon, 06 Aug 2007 08:55:13 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Heap Corruption&amp;quot; warum? on Mon, 06 Aug 2007 08:59:13 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">RedirectableObject **obj = new RedirectableObject*[vec.size()+1];
obj = enum_list;
</code></pre>
</blockquote>
<p>Dir ist klar, was du mit so einer Aktion erreichst? Mit der zweiten Zeile vergisst du die Adresse des per new angelegten Bereiches und biegst obj um auf das Ziel von enum_list (wo immer das herkommt).</p>
<p>PS: Darf man fragen, wozu dieser Code gut sein soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339403</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Aug 2007 08:59:13 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Heap Corruption&amp;quot; warum? on Mon, 06 Aug 2007 09:09:08 GMT]]></title><description><![CDATA[<p>hmm, stimmt vollends. *mist*<br />
naja manchmal will man es einfach nicht sehen. *auf kopf klatsch*</p>
<p>ich wollte an eine Liste von RedirectableObjects ein beliebiges Object anhängen. Die enum_list ist die bereits bestehende Liste. An diese soll das neue Object &quot;angeflanscht&quot; werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339405</guid><dc:creator><![CDATA[rona]]></dc:creator><pubDate>Mon, 06 Aug 2007 09:09:08 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Heap Corruption&amp;quot; warum? on Mon, 06 Aug 2007 09:13:25 GMT]]></title><description><![CDATA[<p>Und was ist in diesem Zusammenhang 'vec'? (und warum hantierst du noch mit nackten Pointern herum, wenn du doch die STL-Container dafür nutzen kannst?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339410</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Aug 2007 09:13:25 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Heap Corruption&amp;quot; warum? on Mon, 06 Aug 2007 09:41:29 GMT]]></title><description><![CDATA[<p>&quot;vec&quot; ist eine Vektor der die RedirectableObjects enthält. Das soll eine Erweiterung eines bereits vorhandenen Programmes werden. In diesem wird es bereits so verwendet um die vorhandenen Laufwerke zu enumerieren. Ich sollte die Möglichkeit einbauen einen weiteres lokales Verzeichnis dieser Liste hinzuzufügen, ohne dabei die Struktur des Programmes zu verändern.</p>
<p>Achso ganz vergessen. Vielen Dank für die Hilfe. Hab das Problem nun gelöst <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/1339423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339423</guid><dc:creator><![CDATA[rona]]></dc:creator><pubDate>Mon, 06 Aug 2007 09:41:29 GMT</pubDate></item></channel></rss>