<?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[Unberechenbare Programmabstürze - Compiler Schuld?]]></title><description><![CDATA[<p>Hallo! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Ich habe ein mitlerweile recht komplexes Programm mit QDevelop (C++) implementiert. Es ist ein 3D-Viewer der STL Datensätze einliest. Das Problem was ich im Moment habe ist, dass ein und der selbe Datensatz mal problemlos eingelesen wird während das gesamte Programm ein anderes Mal abschmiert.</p>
<p>Ich arbeite sehr viel mit Pointern und std::vector&lt;bla&gt;. Es ist klar, das sowas immer fehleranfällig ist, aber wie erwähnt, funktioniert es meistens nach dem Programmstart (Erfolgsquote liegt bei gefühlten 79%). Es sieht also nicht so aus, als wäre das ein systematischer Fehler! <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>
<p>Kann denn sowas am Compiler liegen? QDevelop kompiliert mit mingw. Wie gesagt, es wird viel mit Pointern rumhantiert. Da kommen schon ein paar Tausend Verkettungen vor, die dann stückweise auch wieder gelöscht werden, also ein wahres Pointer Gemetzel.</p>
<p>Die Frage ist letztendlich die: Muss ich immer annehmen, dass ich als Entwickler den Fehler produziere? Oder wirkt ein Compilerwechsel manchmal Wunder?</p>
<p>Danke im Voraus und viele Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242479/unberechenbare-programmabstürze-compiler-schuld</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 03:27:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242479.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Jun 2009 11:09:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:09:56 GMT]]></title><description><![CDATA[<p>Hallo! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Ich habe ein mitlerweile recht komplexes Programm mit QDevelop (C++) implementiert. Es ist ein 3D-Viewer der STL Datensätze einliest. Das Problem was ich im Moment habe ist, dass ein und der selbe Datensatz mal problemlos eingelesen wird während das gesamte Programm ein anderes Mal abschmiert.</p>
<p>Ich arbeite sehr viel mit Pointern und std::vector&lt;bla&gt;. Es ist klar, das sowas immer fehleranfällig ist, aber wie erwähnt, funktioniert es meistens nach dem Programmstart (Erfolgsquote liegt bei gefühlten 79%). Es sieht also nicht so aus, als wäre das ein systematischer Fehler! <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>
<p>Kann denn sowas am Compiler liegen? QDevelop kompiliert mit mingw. Wie gesagt, es wird viel mit Pointern rumhantiert. Da kommen schon ein paar Tausend Verkettungen vor, die dann stückweise auch wieder gelöscht werden, also ein wahres Pointer Gemetzel.</p>
<p>Die Frage ist letztendlich die: Muss ich immer annehmen, dass ich als Entwickler den Fehler produziere? Oder wirkt ein Compilerwechsel manchmal Wunder?</p>
<p>Danke im Voraus und viele Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720943</guid><dc:creator><![CDATA[quaid]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:09:56 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:13:40 GMT]]></title><description><![CDATA[<p>Du solltest immer davon ausgehen, dass es dein Fehler ist ^^</p>
<p>Das klingt sehr stark danach, als ob du mal nen Fehler mit nem pointer machst, der undefiniertes verhalten zur folge hat, aber meistens klappt, weil der speicher da noch nicht überschrieben wurde und so zufällig noch der gewünschte wert drin steht...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720950</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:13:40 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:15:26 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>Es ist klar, das sowas immer fehleranfällig ist, aber wie erwähnt, funktioniert es <strong>meistens</strong> nach dem Programmstart</p>
</blockquote>
<p>Das bedeutet, es funktioniert eben <strong>nicht</strong>. Undefiniertes Verhalten kann leicht entstehen, wenn man viel mit rohen Zeigern hantiert.</p>
<p>quaid schrieb:</p>
<blockquote>
<p>Kann denn sowas am Compiler liegen? [...]</p>
<p>Die Frage ist letztendlich die: Muss ich immer annehmen, dass ich als Entwickler den Fehler produziere? Oder wirkt ein Compilerwechsel manchmal Wunder?</p>
</blockquote>
<p>Normalerweise kannst du davon ausgehen, dass du schuld bist, besonders bei modernen Compilern. Zum Testen kannst du aber schon einmal einen anderen Compiler probieren, doch sei gewarnt: Wenn es dort nicht abstürzt, heisst das nicht, dass das Programm keine Fehler mehr hat, geschweige denn, dass der andere Compiler verbuggt ist. Also bringt dir das schlussendlich nicht allzu viel, um Fehler zu finden.</p>
<p>quaid schrieb:</p>
<blockquote>
<p>gesagt, es wird viel mit Pointern rumhantiert. Da kommen schon ein paar Tausend Verkettungen vor, die dann stückweise auch wieder gelöscht werden, also ein wahres Pointer Gemetzel.</p>
</blockquote>
<p>Warum machst du sowas überhaupt? Gerade C++ bietet sehr viele schöne Möglichkeiten, Zeiger zu kapseln und die Handhabung sicher zu gestalten. Wenn du diese nicht nutzt, musst du dich nicht über Fehleranfälligkeit wundern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720953</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:17:21 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>Die Frage ist letztendlich die: Muss ich immer annehmen, dass ich als Entwickler den Fehler produziere?</p>
</blockquote>
<p>Grundsätzlich erstmal ja. Solange du nur Annahmen machst, mach die Annahme dass der Fehler bei dir liegt. Dass der Compiler n Fehler gemacht hat solltest du erst dann &quot;annehmen&quot; wenn du es beim Debugging bewiesen hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720955</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:17:21 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:30:10 GMT]]></title><description><![CDATA[<p>Wow, hier kriegt man aber schnell Antworten, dankeschön! <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>Ich kenn mich in C++ nicht so aus, welche Alternativen zu Pointern gibt es denn? Es sollte halt schnell gehen, weil wir Datensätze von mehreren 100MB einlesen die dann in einer komplexen Datenstruktur organisiert werden.</p>
<p>Ich kenne halt nur den Grundsatz, dass auf ein</p>
<pre><code>delete myPointer
</code></pre>
<p>immer ein</p>
<pre><code>myPointer = NULL
</code></pre>
<p>folgen sollte, und dass man in verketteten Listen das &quot;next&quot; Element auch mit NULL initialisiert. Ausserdem, dass man IMMER auf (!(myPointer == NULL)) checken soll, bevor man irgendwas macht.</p>
<p>Aber das habe ich überall gemacht <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="😞"
    /></p>
<p>Ich werd jetzt aber nochmal suchen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720967</guid><dc:creator><![CDATA[quaid]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:30:10 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:34:32 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>Ich kenn mich in C++ nicht so aus, welche Alternativen zu Pointern gibt es denn? Es sollte halt schnell gehen, weil wir Datensätze von mehreren 100MB einlesen die dann in einer komplexen Datenstruktur organisiert werden.</p>
</blockquote>
<p>Sicherheit sollte generell vor Geschwindigkeit gehen. Im Übrigen bleibt abzuwarten, ob die Alternativen merklich langsamer sind.</p>
<p>Ganz zentral und wichtig sind in C++ die <a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">STL-Container</a>. Da gibt es eine Vielzahl fertiger Datenstrukturen, die effizient programmiert sind und dir die Speicherverwaltung und das Rumgefrickel abnehmen. Darunter hat es auch eine verkettete Liste ( <code>std::list</code> ). Ich empfehle dir wirklich unbedingt, diese Containerklassen zu verwenden. Durch Assertions im Debug-Modus werden zum Beispiel bereits sehr viele Fehler aufgedeckt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720971</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:34:32 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:39:52 GMT]]></title><description><![CDATA[<p>Ich weiß nicht genau, ob Nexus das schon meinte, aber:<br />
Es hört sich nicht so an, als ob du wirklich so viele pointer brauchen würdest...<br />
Datensätze einlesen geht auch ohne Pointer...<br />
In Listen/... stopfen geht (zumindest an der Schnittstelle) auch ohne Pointer...</p>
<p>bb</p>
<p>edit:<br />
btw:<br />
<code>(!(myPointer == NULL))</code> -&gt; <code>(myPointer != NULL)</code> -&gt; <code>(myPointer)</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720975</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:40:35 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>...Ich arbeite sehr viel mit Pointern und std::vector&lt;bla&gt;....</p>
</blockquote>
<p>Hi,</p>
<p>ich wollte nur einmal in Erinnerung rufen, dass Iteratoren (und damit auch Zeiger) auf Vektorelemente ungültig werden, wenn man den vector verändert (vergrößert/verkleinert/kopiert/Elemente entfernt/....).<br />
Das ist ein ziemlich komplexes Problem bei Containern und wird gerne mal übersehen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720977</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:40:35 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:42:42 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Das ist ein ziemlich komplexes Problem bei Containern und wird gerne mal übersehen...</p>
</blockquote>
<p>...und bei einer gut implementierten Standardbibliothek in vielen Fällen durch Assertions aufgedeckt. <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>Ich hab das Gefühl, das Problem liegt hier eher bei den Zeigern. Nur so eine Vermutung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720978</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:42:42 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:43:14 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>Ich kenne halt nur den Grundsatz, dass auf ein</p>
<pre><code>delete myPointer
</code></pre>
<p>immer ein</p>
<pre><code>myPointer = NULL
</code></pre>
<p>folgen sollte, und dass man in verketteten Listen das &quot;next&quot; Element auch mit NULL initialisiert. Ausserdem, dass man IMMER auf (!(myPointer == NULL)) checken soll, bevor man irgendwas macht.</p>
</blockquote>
<p>Wenn solche Krücken für dich &quot;Grundsätze&quot; sind, dann geh davon aus, dass das Problem mit Sicherheit in deinem Code liegt. Bei einem ordentlichen Design braucht man so etwas eigentlich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720980</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:43:14 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:46:41 GMT]]></title><description><![CDATA[<p>Super, danke für eure Antworten! Jetzt hab ich auf jeden Fall erstmal genug zu tun, bevor sich (hoffentlich keine) neuen Fragen ergeben.</p>
<p>Ich werd mir die STL für die Zukunft merken. Immerhin verwende ich ja bereits zum Teil std::vector&lt;...&gt; aber mir war nicht bewusst, dass es da ein ganzes Paket für jedes Einsatzgebiet gibt.</p>
<p>Da ich aber schon mittendrin bin, im Pointer-Dschungel habe ich jetzt auch den Ehrgeiz das Ding zum Laufen zu kriegen. Werd mir mal anschauen ob ich irgendwo in einen Vektor reinzeige, das war ein guter Einwand.</p>
<p>Nochmal vielen Dank, tolles Forum hier! <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/1720986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720986</guid><dc:creator><![CDATA[quaid]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:46:41 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:49:15 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>quaid schrieb:</p>
<blockquote>
<p>Ich kenne halt nur den Grundsatz, dass auf ein</p>
<pre><code>delete myPointer
</code></pre>
<p>immer ein</p>
<pre><code>myPointer = NULL
</code></pre>
<p>folgen sollte, und dass man in verketteten Listen das &quot;next&quot; Element auch mit NULL initialisiert. Ausserdem, dass man IMMER auf (!(myPointer == NULL)) checken soll, bevor man irgendwas macht.</p>
</blockquote>
<p>Wenn solche Krücken für dich &quot;Grundsätze&quot; sind, dann geh davon aus, dass das Problem mit Sicherheit in deinem Code liegt. Bei einem ordentlichen Design braucht man so etwas eigentlich nicht.</p>
</blockquote>
<p>Und wenn man alles richtig macht, braucht man auch kein Forum <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/1720988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720988</guid><dc:creator><![CDATA[quaid]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:49:15 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 11:52:47 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>Erfolgsquote liegt bei gefühlten 79%</p>
</blockquote>
<p>Was denn, keine Kommastellen? Hätte mir mehr von dir erwartet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720991</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Jun 2009 11:52:47 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Thu, 04 Jun 2009 12:44:19 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Das ist ein ziemlich komplexes Problem bei Containern und wird gerne mal übersehen...</p>
</blockquote>
<p>...und bei einer gut implementierten Standardbibliothek in vielen Fällen durch Assertions aufgedeckt. <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>Ich hab das Gefühl, das Problem liegt hier eher bei den Zeigern. Nur so eine Vermutung...</p>
</blockquote>
<p>Meine doch auch!</p>
<p>Ungültig gewordene Iteratoren könnte eine STL (vermutlich aber auch nur im Debugmodus) evtl. noch abfangen ... bei Zeigern fällt mir nicht ein, wie das gehen könnte.<br />
Meine Argumentation war eher: Wenn schon Iteratoren ungültig werden, dann Zeiger erst recht.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721038</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 04 Jun 2009 12:44:19 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Mon, 08 Jun 2009 19:45:56 GMT]]></title><description><![CDATA[<p>So, ich habe mich jetzt vom Pointer Wirr-Warr verabschiedet und arbeite mit den STL-Containern. Alles läuft super und der Code sieht auch gleich viiieeeeel sauberer aus. Schnell genug arbeiten die Dinger auch. Die paar hundert MB werden jedenfalls in 20 Sekunden abgearbeitet und währenddessen werden Millionen(!) von vectoren und listen erzeugt, verändert und gelöscht.</p>
<p>Ich hänge jetzt an einer anderen Stelle. Wenn einer Lust hat, kann er mir schnell sagen wie ich assertions von vectoren abfangen kann, denn das brauch ich grad.</p>
<p>Ansonsten vielen vielen Dank für alle Antworten und den Tip mit der STL. Ich bin definitiv bekehrt worden. <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>
<p>Also. Thema geschlossen.</p>
<p>Tschöö!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723505</guid><dc:creator><![CDATA[quaid]]></dc:creator><pubDate>Mon, 08 Jun 2009 19:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Mon, 08 Jun 2009 19:55:25 GMT]]></title><description><![CDATA[<p>assert fängt man nicht ab. die gibts, wenn du was programmiert hast was nicht sein soll und das muss geändert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723511</guid><dc:creator><![CDATA[uknow]]></dc:creator><pubDate>Mon, 08 Jun 2009 19:55:25 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Tue, 09 Jun 2009 06:46:05 GMT]]></title><description><![CDATA[<p>Hi quaid,</p>
<p>uknow schrieb:</p>
<blockquote>
<p>assert fängt man nicht ab. die gibts, wenn du was programmiert hast was nicht sein soll und das muss geändert werden.</p>
</blockquote>
<p>Sehe ich auch so .... allerdings vermute ich, dass Du eine assertion von vector::operator[]() (im Debugmode) wegen Indexüberschreitung bekommst.<br />
Als Erstes solltest Du da debuggen, ob/wo/warum Du dem vector irgendwohin greifen willst, wo er es nicht gerne hat ;).<br />
Dann solltest Du entscheiden, ob<br />
a) ein simpler Programmierfehler vorliegt,<br />
b) Du mit einer vorherigen Abfrage klarkommst oder<br />
c) Du besser vector::at() verwendest (der prüft solche Fehler).</p>
<p>c) würde ich nicht unbedingt als Standardlösung vorschlagen, aber es gibt Programme, da ist es das richtige Mittel (wenn man permanent Indizes von &quot;außen&quot; hereingereicht bekommt und jedesmal selbst prüfen müsste, kann man das besser at() machen lassen).</p>
<p>Gruß,</p>
<p>Simon2</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723615</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 09 Jun 2009 06:46:05 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Mon, 15 Jun 2009 14:07:41 GMT]]></title><description><![CDATA[<p>Ich hab den Fehler gefunden, und diesmal lags nicht an mir! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> <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>Bei sehr großen Datensätzen kam der Rechner nicht mehr mit. Genauer gesagt, nachdem der 5.450.153te Vector angelegt wurde. Diese Vektoren habe ich nun durch statische Arrays ersetzt, da ohnehin nicht mehr als 3 Einträge gebraucht werden. Jetzt funktioniert alles bestens.</p>
<p>Man sollte also doch nicht unbedingt immer grundsätzlich mit Vektoren arbeiten :p</p>
<p>So, nochmal vielen Dank für alle Antworten und tschöö!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1727008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1727008</guid><dc:creator><![CDATA[quaid]]></dc:creator><pubDate>Mon, 15 Jun 2009 14:07:41 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Mon, 15 Jun 2009 14:14:43 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>Bei sehr großen Datensätzen kam der Rechner nicht mehr mit. Genauer gesagt, nachdem der 5.450.153te Vector angelegt wurde. Diese Vektoren habe ich nun durch statische Arrays ersetzt, da ohnehin nicht mehr als 3 Einträge gebraucht werden. Jetzt funktioniert alles bestens.</p>
</blockquote>
<p>Schön, wenn es funktioniert - auch, wenn mir der Grund ein wenig unglaubwürdig erscheint x)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1727015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1727015</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 15 Jun 2009 14:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Mon, 15 Jun 2009 14:38:47 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>Bei sehr großen Datensätzen kam der Rechner nicht mehr mit. Genauer gesagt, nachdem der 5.450.153te Vector angelegt wurde. Diese Vektoren habe ich nun durch statische Arrays ersetzt, da ohnehin nicht mehr als 3 Einträge gebraucht werden. Jetzt funktioniert alles bestens.</p>
</blockquote>
<p>Darf ich fragen, wofür du 5'450'153 mal einen <code>std::vector</code> brauchst?</p>
<p>quaid schrieb:</p>
<blockquote>
<p>Man sollte also doch nicht unbedingt immer grundsätzlich mit Vektoren arbeiten :p</p>
</blockquote>
<p>Das stimmt durchaus, aber mich würde ehrlich gesagt interessieren, ob es hier wirklich auch der Fall ist, bzw. ob man vielleicht nicht einiges mehr anders machen könnte.</p>
<p>Aber das ist natürlich dir überlassen, ob du uns noch weiterhin in dem Bereich konsultieren möchtest <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1727025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1727025</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 15 Jun 2009 14:38:47 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Mon, 15 Jun 2009 21:18:31 GMT]]></title><description><![CDATA[<p>Da ich ja jetzt überaus stolz bin, dass alles funktioniert erkläre ichs natürlich auch gerne. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Ich lese einen 3D-Datensatz ein und speichere den in einer Face-Based Datenstruktur. Ich habe also alle Dreiecke inklusive Nachbarschaftsbeziehung im Speicher. Die Dreiecke werden alle in einen Vektor gepackt. Theoretisch kann jedes Dreieck beliebig viele Nachbarn haben (Nachbarschaft ist über die Kanten definiert). Diese Nachbarliste wollte ich halt auch bequem in einem Vektor speichern.</p>
<p>Allerdings haben wir wie gesagt riesige Datensätze mit mehreren Millionen Dreiecken, womit auch Millionen von Vektoren angelegt wurden. Bei besagter Zahl war eben Schluss. Genauer gesagt war nicht beim Anlegen eines Nachbarvektors Schluss, sondern bei einem ...push_back(newNeighborId).</p>
<p>Ich hab die Vektoren entfernt und einen statischen Array für jedes Dreieck angelegt. Da die Netze mit denen wir arbeiten immer Manifolds sind, also über jede Kante nur maximal einen Nachbarn haben, ist das so okay.<br />
Wenn ich aber irgendwann mal non-manifolds einlesen will ist das natürlich doof, aber wer weiß ob das überhaupt passiert!</p>
<p>So, ich hoffe das hilft euch jetzt beim Einschlafen <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/1727237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1727237</guid><dc:creator><![CDATA[quaid]]></dc:creator><pubDate>Mon, 15 Jun 2009 21:18:31 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Tue, 16 Jun 2009 06:27:21 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>...einen 3D-Datensatz ...</p>
</blockquote>
<p>Also da wundere ich mich sowieso, wie Du auf vector gekommen bist. Das klingt sogar so als ob Du mit einem struct auch gut gefahren wärst.<br />
vector ist großartig, wo man eine variable oder eine große Dimension hat und die Elemente gleichwertig sind.<br />
Das scheint in Deinem Fall nicht zuzutreffen.<br />
Ich bin nicht einmal davon überzeugt, dass ein Array für Dich die beste Wahl ist.<br />
Vermutlich hast Du doch noch &quot;Fachlichkeit in der Dimension versteckt&quot;, oder?<br />
(so in dem Sinne &quot;a[0] ist der x-Wert, a[1] ist der y-Wert und a[2] ist der z-Wert&quot;)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1727345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1727345</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 16 Jun 2009 06:27:21 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Tue, 16 Jun 2009 08:12:30 GMT]]></title><description><![CDATA[<p>Die Koordinaten speichere ich in einer Klasse Vec3f. Die hat der Lehrstuhl zur Verfügung gestellt. Damit kann man auch direkt alle möglichen Vektorrechnungen durchführen (wie Kreuzprodukt, Norm, ...) Da die Dreiecke ja in meinem Fall jetzt alle den gleichen Aufbau haben hab ich ja jetzt einen Vektor der viele gleichwertige Daten enthält.</p>
<p>Ein Vektor bzw. Array ist auch nötig, da die Dreiecke indiziert werden. So bekomme ich z.B. alle Nachbarn eines Punktes, indem ich die anliegenden Dreiecke durchlaufe. D.h. jeder Punkt verweist erstmal auf ein anliegendes Dreieck und von da aus suche ich die Punktenachbarschaft (über die Nachbardreiecke). Das ist das Prinzip einer Face-Based Datenstruktur.<br />
Ausserdem werde ich auch Dezimierungsalgorithmen implementieren, da muss ich dann einzelne Dreiecke löschen, was auch schnell gehen soll.</p>
<p>Hmm, beim Schreiben merk ich grad dass da vll eine Liste besser wäre. Aber wenn ich jetzt umsteige muss ich aus den Verweisen über ID wieder Pointerverweise machen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Ich änder aber nix mehr, sonst wird mir noch schwindelig. Ich bin mit der aktuellen Lösung zufrieden. Es läuft schnell und zuverlässig! Und vor allem hab ich keinen Ärger mehr mit irgendwelchen ungültigen Pointern... <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/1727395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1727395</guid><dc:creator><![CDATA[quaid]]></dc:creator><pubDate>Tue, 16 Jun 2009 08:12:30 GMT</pubDate></item><item><title><![CDATA[Reply to Unberechenbare Programmabstürze - Compiler Schuld? on Tue, 16 Jun 2009 09:17:02 GMT]]></title><description><![CDATA[<p>quaid schrieb:</p>
<blockquote>
<p>,,,Ich bin mit der aktuellen Lösung zufrieden. Es läuft schnell und zuverlässig! Und vor allem hab ich keinen Ärger mehr mit irgendwelchen ungültigen Pointern... <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>
</blockquote>
<p><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="👍"
    /> <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="👍"
    /><br />
Na - das ist doch das Wichtigste!! (meine ich ganz ernst)<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1727440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1727440</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 16 Jun 2009 09:17:02 GMT</pubDate></item></channel></rss>