<?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 zur Laufzeit des Programms durch dynamisches Erzeugen von Instanzen auf eine Klasse?!?]]></title><description><![CDATA[<p>Hallo ich bin es mal wieder <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>
<p>Habe immer noch Probleme mit meinen Threads.<br />
Ja ich weiß C++ kennt keine Threads, da ich aber vermute das<br />
der Fehler nicht unbedingt an den Threads selber liegt sondern<br />
vielleicht an dem erzeugen der Instanzen auf die Threadhaltende<br />
Klasse denke ich das die Frage hier richtig eingeordnet sein könnte.</p>
<p>hier der CodeSchnipsel wie ich versuche dynamich eine Instanz zu erzeugen:</p>
<pre><code class="language-cpp">class TMainINIT : public TKonfiguration
{
public:	
         ...
protected:
public:
         ...	
	// vector zur Aufnahme beliebig vieler Fahrzeuginstanzen
	vector&lt;TFahrzeug&gt; FahrzeugInstanzen;
	vector&lt;TFahrzeug&gt;::iterator PosFahrzeugInstanzen;

	void CreateFahrzeugInstanz();
         ...
};

...
void TMainINIT::CreateFahrzeugInstanz()
// Erzeug eine Neue Instanz auf Fahrzeug und speichert 
// sie in dem Fahrzeug vector
{
	TFahrzeug NeuesFahrzeug;
	this-&gt;FahrzeugInstanzen.push_back(NeuesFahrzeug);	
}
</code></pre>
<p>Das Problem hiemit ist wie sicher sofort auffält, das<br />
<strong>TFahrzeug NeuesFahrzeug</strong> nur eine Lebensdauer von der länge der Funktion hat und danach aufhört zu existieren (Deconstruktor wird aufgerufen etc.)</p>
<p>Daher bin ich mir nicht sicher ob diese Erzeugung mit für die Fehler, die ich zur Laufzeit des Programms bekomme verantwortlich sein könnte.<br />
Obwohl es mit diesem Konstruckt bei nur einem Thread fehlerfrei läuft!?!</p>
<p>die Fehler die auftreten lauten übrigens:<br />
<strong>Damage after Normal Block (#.....)</strong><br />
oder<br />
<strong>_BLOCK_TYPE_IS_VAILID_(CpHead-&gt;nBlockuse)</strong></p>
<p>Ich habe schon versucht den Fehler innerhalb meines Programmes mittels OnlineDebuging einzugreisen, Ohne Erfolg <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> , er tritt sporadisch<br />
im geasammten Thread auf. Das einizige was ich mit Gewissheit sagen kann mit steigender Threadzahl nimmt auch die Häufigkeit dieser Fehler zu. *aaagh*</p>
<p>Wenn jemand mir eine bessere Lösung für das dynamische erzeugen von Instanzen verraten kann, bin ganz Ohr.<br />
Wenn Jemand noch genaueres über diese Fehler weiß, oder wie man solche Fehler einkreisen kann, ich bin für jeden Tipp dankbar</p>
<p>Gruß Wastman</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/119071/fehler-zur-laufzeit-des-programms-durch-dynamisches-erzeugen-von-instanzen-auf-eine-klasse</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 17:28:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119071.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Aug 2005 12:43:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler zur Laufzeit des Programms durch dynamisches Erzeugen von Instanzen auf eine Klasse?!? on Sat, 27 Aug 2005 12:43:09 GMT]]></title><description><![CDATA[<p>Hallo ich bin es mal wieder <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>
<p>Habe immer noch Probleme mit meinen Threads.<br />
Ja ich weiß C++ kennt keine Threads, da ich aber vermute das<br />
der Fehler nicht unbedingt an den Threads selber liegt sondern<br />
vielleicht an dem erzeugen der Instanzen auf die Threadhaltende<br />
Klasse denke ich das die Frage hier richtig eingeordnet sein könnte.</p>
<p>hier der CodeSchnipsel wie ich versuche dynamich eine Instanz zu erzeugen:</p>
<pre><code class="language-cpp">class TMainINIT : public TKonfiguration
{
public:	
         ...
protected:
public:
         ...	
	// vector zur Aufnahme beliebig vieler Fahrzeuginstanzen
	vector&lt;TFahrzeug&gt; FahrzeugInstanzen;
	vector&lt;TFahrzeug&gt;::iterator PosFahrzeugInstanzen;

	void CreateFahrzeugInstanz();
         ...
};

...
void TMainINIT::CreateFahrzeugInstanz()
// Erzeug eine Neue Instanz auf Fahrzeug und speichert 
// sie in dem Fahrzeug vector
{
	TFahrzeug NeuesFahrzeug;
	this-&gt;FahrzeugInstanzen.push_back(NeuesFahrzeug);	
}
</code></pre>
<p>Das Problem hiemit ist wie sicher sofort auffält, das<br />
<strong>TFahrzeug NeuesFahrzeug</strong> nur eine Lebensdauer von der länge der Funktion hat und danach aufhört zu existieren (Deconstruktor wird aufgerufen etc.)</p>
<p>Daher bin ich mir nicht sicher ob diese Erzeugung mit für die Fehler, die ich zur Laufzeit des Programms bekomme verantwortlich sein könnte.<br />
Obwohl es mit diesem Konstruckt bei nur einem Thread fehlerfrei läuft!?!</p>
<p>die Fehler die auftreten lauten übrigens:<br />
<strong>Damage after Normal Block (#.....)</strong><br />
oder<br />
<strong>_BLOCK_TYPE_IS_VAILID_(CpHead-&gt;nBlockuse)</strong></p>
<p>Ich habe schon versucht den Fehler innerhalb meines Programmes mittels OnlineDebuging einzugreisen, Ohne Erfolg <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> , er tritt sporadisch<br />
im geasammten Thread auf. Das einizige was ich mit Gewissheit sagen kann mit steigender Threadzahl nimmt auch die Häufigkeit dieser Fehler zu. *aaagh*</p>
<p>Wenn jemand mir eine bessere Lösung für das dynamische erzeugen von Instanzen verraten kann, bin ganz Ohr.<br />
Wenn Jemand noch genaueres über diese Fehler weiß, oder wie man solche Fehler einkreisen kann, ich bin für jeden Tipp dankbar</p>
<p>Gruß Wastman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859610</guid><dc:creator><![CDATA[wastman]]></dc:creator><pubDate>Sat, 27 Aug 2005 12:43:09 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler zur Laufzeit des Programms durch dynamisches Erzeugen von Instanzen auf eine Klasse?!? on Sat, 27 Aug 2005 12:55:25 GMT]]></title><description><![CDATA[<p>Der Code sieht ok aus. Es wird eine Instanz erzeugt, und eine Kopie davon in den den Vector gelegt und anschliessend wird die erste Instanz gelöscht. Soweit ist das gültig und ok.<br />
Wenn Du den Fehler da vermutest, dann solltest Du Dir anschauen, ob Dein Copy-Constructor richtig ist. Enthält z.B. TFahrzeug irgendwelche Pointer, die beim Kopieren mit kopiert werden und im Destruktor gelöscht werden?<br />
Ausserdem solltest Du daran denken, dass deine Instanzen im vector nicht konstant sind, d.h. durch ein push_back kann es passieren, dass alle bisherigen Elemente umkopiert werden (d.h. es wird wieder der Copy-Construktor von TFahrzeug bemüht).</p>
<p>Ggf. ist ein Arbeiten mit Pointern besser:</p>
<pre><code class="language-cpp">vector&lt;TFahrzeug*&gt; FahrzeugPointer;
...
// in der Funktion
FahrzeugPointer.push_back( new TFahrzeug());
</code></pre>
<p>Du musst jetzt allerdings auch selbst dafür sorgen, den Speicher wieder freizugeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859619</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Sat, 27 Aug 2005 12:55:25 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler zur Laufzeit des Programms durch dynamisches Erzeugen von Instanzen auf eine Klasse?!? on Sat, 27 Aug 2005 13:15:27 GMT]]></title><description><![CDATA[<p>Sehe ich das richtig dass du von mehreren threads auf den vector FahrzeugInstanzen einer einzigen Instanz von TMainINIT zugreifst ?<br />
Wenn das so ist brauchst du funktionen zur Thread-synchronisierung sonst krachts.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859621</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sat, 27 Aug 2005 13:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler zur Laufzeit des Programms durch dynamisches Erzeugen von Instanzen auf eine Klasse?!? on Sat, 27 Aug 2005 13:35:01 GMT]]></title><description><![CDATA[<p>Hmmm<br />
Schon mal danke für den Tip</p>
<p>TFahrzeug enthält zwar Pointer, diese Werden aber erst bei allen Instanzen<br />
gesetzt, nanchdem alle benötigten Instanzen erzeugt wurden.<br />
--&gt; Ich gehe den Vector Element für Element durch und setze dort die Pointer.<br />
Danach wird bis zum Ende der Laufzeit des Programms keine neuen Fahrzeuge mehr angelegt.</p>
<p>hmm.<br />
Also kann ich das als warscheinliche Fehlerquelle streichen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Werde dennoch nochmal kontrollieren, das da kein Pointer verschüt geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859630</guid><dc:creator><![CDATA[wastman]]></dc:creator><pubDate>Sat, 27 Aug 2005 13:35:01 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler zur Laufzeit des Programms durch dynamisches Erzeugen von Instanzen auf eine Klasse?!? on Sat, 27 Aug 2005 13:45:33 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7155">@Zuk</a></p>
<p>Na ja also MainINIT ist nur der Halter der ganzen Instanzen, unter anderem auch der Instanzen auf die Fahrzeuge. Das Fahrzeug selber greift nicht auf MainINIT zurück, sondern wird vor dem start von MainINIT mit allem versorgt , was es braucht. Die Komminikationen unter den Threads selber laufen über eine Klasse GlobalData und ThreadStatus, welche als Instanzen ebenfalls in MainINIT angelegt werden und dann an die einzelnen Fahrzeuge als Pointer bei der Initialisierung, nach dem Anlegen aller Fahrzeuge (siehe oben), weitergereicht wird. Das Schreiben und lesen in diesen beiden Klassen ist mittels Mutexen geschützt.<br />
Wie gesagt der Fehler tritt sporadich, mit steigender Häufigkeit bei mehr Threads auf. D.H. wenn das Programm gut gelaunt ist berechnet es mir meine 3-X Fahrzeuge problemlos 30000 mal, oder es kamm auch schon vor das das Programm beim 10 Durchlauf mit Fehler abbgebrochen hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/859635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859635</guid><dc:creator><![CDATA[wastman]]></dc:creator><pubDate>Sat, 27 Aug 2005 13:45:33 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler zur Laufzeit des Programms durch dynamisches Erzeugen von Instanzen auf eine Klasse?!? on Sun, 28 Aug 2005 10:36:52 GMT]]></title><description><![CDATA[<p>Dann ist es ziemlich sicher ein Thread-Synchronisationsproblem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859971</guid><dc:creator><![CDATA[Ringding]]></dc:creator><pubDate>Sun, 28 Aug 2005 10:36:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler zur Laufzeit des Programms durch dynamisches Erzeugen von Instanzen auf eine Klasse?!? on Sun, 28 Aug 2005 17:41:28 GMT]]></title><description><![CDATA[<p>Hmmm habe den Fehler gefunden.<br />
War ein ThreadSynch Problem.<br />
Allerdings in der dafür ungünstigsten Klasse ^^ in meiner Debug Klasse ...<br />
*AAARGH* Das war ein sprichwörtlicher Teufelskreis...<br />
Je mehr OnlineDebugging ich betrieben habe um den Fehler zu finden um so häufiger trat er auf an immer anderen Stellen ....</p>
<p>Na ja Gut das der jetzt weg ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Gruß Wastman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/860220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860220</guid><dc:creator><![CDATA[wastman]]></dc:creator><pubDate>Sun, 28 Aug 2005 17:41:28 GMT</pubDate></item></channel></rss>