<?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[Fehler im Release Mode]]></title><description><![CDATA[<p>Wenn ich mein Programm im Debug Modus kompiliere und starte funktioniert es absolut reibungslos. Wenn ich aber im Release Modus kompiliere und starte wird eine von mir verwendete Funktion korrekt ausgeführt. Wenn diese Funktion aber ein zweites mal ausgeführt wird bekomme ich diese Fehlermeldung:</p>
<p>Windows hat einen Haltepunkt in mover.exe ausgelöst.</p>
<p>Dies kann auf eine Beschädigung des Heaps zurückzuführen sein, die auf ein Problem in mover.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 mover.exe den Fokus hat.</p>
<p>Weitere Analyseinformationen finden Sie möglicherweise im Ausgabefenster.</p>
<p>Ausgabefenster:</p>
<p>+ paramvec [5](&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;) std::vector&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt;,std::allocator&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &gt; &gt;<br />
myvec [0]() std::vector&lt;option *,std::allocator&lt;option *&gt; &gt;</p>
<p>Quellcode der Funktion (stark verkürtzt)</p>
<pre><code class="language-cpp">int main()
{
vector&lt;std::string&gt; parameter;	
parameter += &quot;String1&quot;,&quot;String2&quot;;
makeOption(parameter);
parameter.clear();//Nach dieser Anweisung wird parameter wieder befüllt und an makeOption übergeben
}
int makeOption(vector&lt;std::string&gt; paramvec)
{
	vector&lt;option*&gt; myvec;//Vector von Zeigern auf Objekte der Klasse &quot;option&quot;
	for(unsigned int LaufVar_a = 0;LaufVar_a &lt; paramvec.size();++LaufVar_a)
	{
		myvec.push_back(new option(paramvec[LaufVar_a]));//Konstruktor von option verlangt std::string als Parameter
		//paramvec[LaufVar_a].~basic_string();//Habe ich hinzugefügt nach dem die Fehlermeldung kam. Genützt hat es nichts.
	}
	//paramvec.~vector();
	myvec[x]-&gt;setinactive();
	/*Und noch weitere Methodenaufrufe*/
        myvec[ri]-&gt;~option();//wird durchiteriert
	myvec.~vector();//Hoffe das ist richig so, ist das erste mal dass ich was mit Vectoren mache

}
</code></pre>
<p>Hoffe es kann mir Jemand helfen. Das komische ist ja, dass es im Debug Modus funktioniert und im Release Modus nicht.</p>
<p>Übrigens: Visual C++ 2008 Express Edition</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223426/fehler-im-release-mode</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 21:19:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223426.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 25 Sep 2008 20:39:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler im Release Mode on Thu, 25 Sep 2008 20:39:53 GMT]]></title><description><![CDATA[<p>Wenn ich mein Programm im Debug Modus kompiliere und starte funktioniert es absolut reibungslos. Wenn ich aber im Release Modus kompiliere und starte wird eine von mir verwendete Funktion korrekt ausgeführt. Wenn diese Funktion aber ein zweites mal ausgeführt wird bekomme ich diese Fehlermeldung:</p>
<p>Windows hat einen Haltepunkt in mover.exe ausgelöst.</p>
<p>Dies kann auf eine Beschädigung des Heaps zurückzuführen sein, die auf ein Problem in mover.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 mover.exe den Fokus hat.</p>
<p>Weitere Analyseinformationen finden Sie möglicherweise im Ausgabefenster.</p>
<p>Ausgabefenster:</p>
<p>+ paramvec [5](&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;,&quot;&quot;) std::vector&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt;,std::allocator&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &gt; &gt;<br />
myvec [0]() std::vector&lt;option *,std::allocator&lt;option *&gt; &gt;</p>
<p>Quellcode der Funktion (stark verkürtzt)</p>
<pre><code class="language-cpp">int main()
{
vector&lt;std::string&gt; parameter;	
parameter += &quot;String1&quot;,&quot;String2&quot;;
makeOption(parameter);
parameter.clear();//Nach dieser Anweisung wird parameter wieder befüllt und an makeOption übergeben
}
int makeOption(vector&lt;std::string&gt; paramvec)
{
	vector&lt;option*&gt; myvec;//Vector von Zeigern auf Objekte der Klasse &quot;option&quot;
	for(unsigned int LaufVar_a = 0;LaufVar_a &lt; paramvec.size();++LaufVar_a)
	{
		myvec.push_back(new option(paramvec[LaufVar_a]));//Konstruktor von option verlangt std::string als Parameter
		//paramvec[LaufVar_a].~basic_string();//Habe ich hinzugefügt nach dem die Fehlermeldung kam. Genützt hat es nichts.
	}
	//paramvec.~vector();
	myvec[x]-&gt;setinactive();
	/*Und noch weitere Methodenaufrufe*/
        myvec[ri]-&gt;~option();//wird durchiteriert
	myvec.~vector();//Hoffe das ist richig so, ist das erste mal dass ich was mit Vectoren mache

}
</code></pre>
<p>Hoffe es kann mir Jemand helfen. Das komische ist ja, dass es im Debug Modus funktioniert und im Release Modus nicht.</p>
<p>Übrigens: Visual C++ 2008 Express Edition</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588154</guid><dc:creator><![CDATA[Machtl]]></dc:creator><pubDate>Thu, 25 Sep 2008 20:39:53 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Release Mode on Thu, 25 Sep 2008 21:03:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">myvec[ri]-&gt;~option();//wird durchiteriert
myvec.~vector();//Hoffe das ist richig so, ist das erste mal dass ich was mit Vectoren mache
</code></pre>
<p>Das ist definitv falsch.<br />
Destruktoren sollte man nur manuell callen, wenn man sich hundertprozentig sicher ist, was man macht (wenn man placement news verwendet).<br />
Lokale Objekte (autimatische Variablen, wie myvec eine ist) werden automaisch beim verlassen des scope zerstört.</p>
<p>wenn du elemente aus dem vector entfernen willst, benutze remove.</p>
<p>Mich wundert aber stark, dass im debug modus das programm nicht abstürzt.</p>
<p>parameter += &quot;String1&quot;,&quot;String2&quot;;<br />
auch sieht diese zeile sehr komisch aus.<br />
ih habe in keiner cpp referenz eine überladung des += operators von vektoren gefunden, webensowenig wie eine überladung des Kommaoperators bei strings.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588159</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Thu, 25 Sep 2008 21:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Release Mode on Thu, 25 Sep 2008 21:07:36 GMT]]></title><description><![CDATA[<p>Machtl schrieb:</p>
<blockquote>
<pre><code class="language-cpp">myvec.~vector();//Hoffe das ist richig so, ist das erste mal dass ich was mit Vectoren mache
</code></pre>
</blockquote>
<p>Nein. Wie auch die anderen expliziten Destruktoraufrufe nicht. Dazu gab es kürzlich Threads hier, such vielleicht mal...</p>
<p>Du solltest zuerst mit <code>delete</code> den Speicherbereich des jeweiligen Elementes (Zeigers) freigeben. Anschliessend kannst du das Element mit <code>std::vector::erase()</code> löschen. Den Destruktor sollte man eigentlich <strong>nie</strong> explizit aufrufen.</p>
<p>Vielleicht solltest du versuchen, nicht Zeiger, sondern Objekte im Vector zu speichern. Dann nimmt dieser dir nämlich die Speicherverwaltung vollständig ab und Heap Corruptions, Memory Leaks und Zugriffsverweigerungen werden seltener.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588161</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 25 Sep 2008 21:07:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Release Mode on Thu, 25 Sep 2008 21:37:28 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19908">@vlad_tepesch</a></p>
<p>Ich habe #include &lt;boost/assign/std/vector.hpp&gt; eingebunden. den Header gibt es irgendwo zum download, ich weiss leider nicht mehr wo.</p>
<p>Löscht std::vector::erase den ganzen Vector oder nur ein Element? Welches Objekt muss ich der Methode übergeben. Wenn ich durchiteriere bekomme ich folgende Fehlermeldung:<br />
Konvertierung des Parameters 1 von'int'in'std::_Vector_const_iterator&lt;_Ty,_Alloc&gt;'nicht möglich</p>
<p>Muss ich mich eigentlich um den Vector der der Funktion übergeben wird nicht kümmern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588168</guid><dc:creator><![CDATA[Machtl]]></dc:creator><pubDate>Thu, 25 Sep 2008 21:37:28 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Release Mode on Thu, 25 Sep 2008 21:43:21 GMT]]></title><description><![CDATA[<p><a href="http://www.cplusplus.com/reference/stl/vector/erase.html" rel="nofollow">Hier</a> steht alles. Du solltest diese Seite öfters benutzen, ist eine gute Referenz zu C++ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588169</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 25 Sep 2008 21:43:21 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler im Release Mode on Fri, 26 Sep 2008 05:45:59 GMT]]></title><description><![CDATA[<p>Machtl schrieb:</p>
<blockquote>
<p>Ich habe #include &lt;boost/assign/std/vector.hpp&gt; eingebunden. den Header gibt es irgendwo zum download, ich weiss leider nicht mehr wo.</p>
</blockquote>
<p>Vermutlich von der <a href="http://www.boost.org" rel="nofollow">boost</a>-Seite.<br />
Wenn man Codeteile ins Forum setzt die bestimmte Voraussetzungen haben, ist es in der Regel auch gut die Includes zu zeigen.</p>
<p>Ansonsten siehe Nexus Antwort...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588199</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 26 Sep 2008 05:45:59 GMT</pubDate></item></channel></rss>