<?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 STL-Vector von Microsoft]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich portiere gerade ein Projekt von Linux (Ubuntu 8.04, 64 bit) nach Windows (XP 32 bit, MSVC9 SP1).<br />
Es kompiliert schon prima und ausführbar ist es auch.</p>
<p>Nun tauchen leider ein paar Ungereimtheiten auf. An einigen Stellen ist die visuelle Darstellung falsch und es stürzt noch zu oft ab.<br />
Beim debuggen ist mir aufgefallen das scheinbar einige Sachen, welche mit einem STL Vector gemacht werden, unter Windows anders reagieren. So kommt es manchmal zu einem assert Programmabbruch. Unter Linux läuft es an der Stelle natürlich wunderbar weiter.</p>
<p>Nun frag ich mich woher die Unterschiede stammen. Gibt es irgendwo eine Übersicht wie sich die MS STL und die GNU STL unterscheiden?</p>
<p>Gibt es vielleicht einen sinnvollen Ersatz für den MS-STL Vector?<br />
Ich habe bereits STLport probiert. Leider sind in meinem Projekt einige externe Bibliotheken eingebaut und mir fällt es gerade schwer diese gegen STLport zu kompilieren. Ist es vielleicht möglich beide STLs parallel zu nutzen (z.B. Boost mit der MS-STL kompiliert mein Programm mit STLport)?</p>
<p>Schonmal vielen Dank für die Antworten,<br />
sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/251077/probleme-mit-stl-vector-von-microsoft</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 15:24:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251077.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Sep 2009 07:37:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 07:37:12 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich portiere gerade ein Projekt von Linux (Ubuntu 8.04, 64 bit) nach Windows (XP 32 bit, MSVC9 SP1).<br />
Es kompiliert schon prima und ausführbar ist es auch.</p>
<p>Nun tauchen leider ein paar Ungereimtheiten auf. An einigen Stellen ist die visuelle Darstellung falsch und es stürzt noch zu oft ab.<br />
Beim debuggen ist mir aufgefallen das scheinbar einige Sachen, welche mit einem STL Vector gemacht werden, unter Windows anders reagieren. So kommt es manchmal zu einem assert Programmabbruch. Unter Linux läuft es an der Stelle natürlich wunderbar weiter.</p>
<p>Nun frag ich mich woher die Unterschiede stammen. Gibt es irgendwo eine Übersicht wie sich die MS STL und die GNU STL unterscheiden?</p>
<p>Gibt es vielleicht einen sinnvollen Ersatz für den MS-STL Vector?<br />
Ich habe bereits STLport probiert. Leider sind in meinem Projekt einige externe Bibliotheken eingebaut und mir fällt es gerade schwer diese gegen STLport zu kompilieren. Ist es vielleicht möglich beide STLs parallel zu nutzen (z.B. Boost mit der MS-STL kompiliert mein Programm mit STLport)?</p>
<p>Schonmal vielen Dank für die Antworten,<br />
sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785733</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Tue, 29 Sep 2009 07:37:12 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 08:06:55 GMT]]></title><description><![CDATA[<p>Ich denke, wenn Du Asserts hast, hast Du Fehler in deinem Programm. Du musst den Code korrigieren, nicht die Library wechseln.</p>
<p>Simon</p>
<p><strong>Edit:</strong> Zeig doch mal den einen oder anderen Assert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785743</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:06:55 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 08:16:33 GMT]]></title><description><![CDATA[<p>Wahrscheinlich greifst du an irgendeiner Stelle über den maximalen Feldindex hinaus zu. Im Debug-Mode fliegt dann halt der Assert. WEnn die Assertion kommt, klicke auf wiederholen und dann abbrechen. So springt der Debugger dann an die Stelle der Assertion. Das wird dann irgendwo im STL-Code sein. Über die Funktionsaufrufliste kannst du die darüber liegenden Funktionen anschauen und so suchen, an welcher Stelle dein eigener Code den falschen Zugriff macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785747</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:16:33 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 08:22:20 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich denke, wenn Du Asserts hast, hast Du Fehler in deinem Programm. Du musst den Code korrigieren, nicht die Library wechseln.</p>
</blockquote>
<p>Ja, aber das lustige ist doch, das der Code unter Linux wunderbar läuft, aber unter Windows stürzt er ab.</p>
<p>In meinem assert prüfe ich ob ein Element an der Stelle steht, an der es stehen soll. Ist leider etwas aufwendiger der Code der dahinter steht.</p>
<pre><code class="language-cpp">assert(toChange.getIndex() == changeCp.getIndex());
</code></pre>
<p>Mein Code hat sich ja nicht geändert. Nur alles was dahinter steht. Da überlege ich natürlich an welcher Komponente es liegt.</p>
<p>Grüße, sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785752</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:22:20 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 08:27:27 GMT]]></title><description><![CDATA[<p>Es tauchen zwar auch eher selten mal Bugs in der STL auf, welche M$ nutzt, aber der std::vector funktioniert <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="😃"
    /> Wie gesagt, debugge das ganze mal wie von mir beschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785754</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:27:27 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 08:37:06 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>Wahrscheinlich greifst du an irgendeiner Stelle über den maximalen Feldindex hinaus zu. Im Debug-Mode fliegt dann halt der Assert. WEnn die Assertion kommt, klicke auf wiederholen und dann abbrechen. So springt der Debugger dann an die Stelle der Assertion. Das wird dann irgendwo im STL-Code sein. Über die Funktionsaufrufliste kannst du die darüber liegenden Funktionen anschauen und so suchen, an welcher Stelle dein eigener Code den falschen Zugriff macht.</p>
</blockquote>
<p>Genau das habe ich gemacht. Ich versucht nochmal etwas sinnvollen Code zu Posten.</p>
<pre><code class="language-cpp">while (!m_v_PointChangesFromUIQueue.empty()) {
		changePoint changeCp = m_v_PointChangesFromUIQueue.back();
		changePoint toChange = m_v_intern_changeList[changeCp.getIndex()];
		assert(toChange.getIndex() == changeCp.getIndex());
// tue was...
		m_v_PointChangesFromUIQueue.pop_back();
	}
</code></pre>
<p>Die Listen m_v_PointChangesFromUIQueue und m_v_intern_changeList sind STL Vektoren. changePoint ist ein Vec3f mit einem zusätzlichen Indexfeld. Dieses Indexfeld gibt den Platz in der m_v_intern_changeList an. Wenn ich also auf das n-te Element der m_v_intern_changeList zugreife, so sollte der changePoint auch den Index n besitzen. Dies läuft auch unter Linux. Nun könnte ich mir vorstellen das der Linuxprogrammierer bei uns, die GNU STL bis in die letzten Feinheiten ausgenutzt hat und ein nicht Standardverhalten bei den Zugriffen ausnutzt. Aber vielleicht ist es auch anders rum und die MS STL hat ein nicht Standardverhalten bei den zugriffen und deshalb läuft mein Code ins assert.</p>
<p>Wenn mir jetzt natürlich alle beteuern das die GNU STL und die MS STL in allen belangen gleich reagieren, müsste ich an einem anderen Punkt weitersuchen. Nur wollte ich diesen Aspekt erstmal ausschließen. Es treten nämlich noch an diversen anderen Stellen Ungereimheiten auf.</p>
<p>Grüße, sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785760</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:37:06 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 08:51:20 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>Es tauchen zwar auch eher selten mal Bugs in der STL auf, welche M$ nutzt, aber der std::vector funktioniert <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>
</blockquote>
<p>Na das ist ja schön zu hören. Ich werde mir mal anschauen wie die Vectoren befüllt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785761</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:51:20 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 08:52:56 GMT]]></title><description><![CDATA[<p><code>m_v_intern_changeList[changeCp.getIndex()];</code><br />
guck mal genau durch, was in der zeile passiert... ich vermute mal, dass hier schon was schief geht...</p>
<p>aber allg. finde ich dieses stück code nicht gerade logisch...</p>
<p>bb</p>
<p>PS: Die assertion scheint mir nicht gerade ein logik-fehler zu sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785767</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 09:12:16 GMT]]></title><description><![CDATA[<p>Spricht dein assert an, oder einer vom std::vector?</p>
<blockquote>
<p>Ja, aber das lustige ist doch, das der Code unter Linux wunderbar läuft, aber unter Windows stürzt er ab.</p>
</blockquote>
<p>Nur weil etwas kein assert auslöst und nicht abstürzt, heisst das nicht, dass es korrekt ist. Die asserts in von MS verwendeten Standard Library zeigen Dir einfach dass dein Code falsch ist.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9676">@Pellaeon</a></p>
<blockquote>
<p>Wahrscheinlich greifst du an irgendeiner Stelle über den maximalen Feldindex hinaus zu.</p>
</blockquote>
<p>Ist aber nicht der einzige Grund. Kann auch sein, dass iteratoren von verschiedenen Container Instanzen genutzt werden, oder iteratoren die nicht mehr gültig sind.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785780</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 29 Sep 2009 09:12:16 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 09:18:45 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>Spricht dein assert an, oder einer vom std::vector?</p>
</blockquote>
<p>Mein assert spricht an. Also der Index unterscheidet sich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785784</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Tue, 29 Sep 2009 09:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 13:18:08 GMT]]></title><description><![CDATA[<p>sjoe schrieb:</p>
<blockquote>
<p>Mein assert spricht an. Also der Index unterscheidet sich.</p>
</blockquote>
<p>Und nichtmal der Index im vector, sonder der Index den du irgendwann mal reingeschrieben hast. Als erstes würde ich da auf einen Fehler bei der Befüllung der vectoren oder beim Index-setzen schließen. Da gleich von einem Fehler in einer der meistbenutzten C++-Bibliotheken dies gibt auszugehen halte ich für extrem gewagt <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/1785933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785933</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 29 Sep 2009 13:18:08 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 13:43:43 GMT]]></title><description><![CDATA[<blockquote>
<p>Da gleich von einem Fehler in einer der meistbenutzten C++-Bibliotheken dies gibt auszugehen halte ich für extrem gewagt <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>
</blockquote>
<p>Von einem Fehler ging ich ja nicht aus, ich dachte ehr an Implementierungsunterschiede. Sowas was im Standard nicht festgelegt ist.</p>
<p>Ich habe inzwischen ein Workaround entwickelt.</p>
<p>Mich würde trotzdem mal interessieren ob es Geschwindigkeitsunterschiede zwischen den STLs gibt. Ich habe mal gelesen das von der STL von VS 2003 abgeraten wurde. Ist das immer noch aktuell?</p>
<p>Grüße, sjoe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785953</guid><dc:creator><![CDATA[sjoe]]></dc:creator><pubDate>Tue, 29 Sep 2009 13:43:43 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 14:58:54 GMT]]></title><description><![CDATA[<p>kommt darauf an. für normale projekte tut sie es.</p>
<p>sobald du aber z.b. über DLL grenzen hinweg auf den vector zugreifen (auch schon<br />
lesend) willst, kommt es zu mysteriösen abstürzen (eigene erfahrung :().</p>
<p>und das liegt daran, dass die ms-stl <strong>wirklich</strong> kaputt war.</p>
<p>je nachdem wie dein projekt aussieht kann es wirklich daran liegen.<br />
in den express-versionen (08) sollte das behoben sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1786007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1786007</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Tue, 29 Sep 2009 14:58:54 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 15:15:36 GMT]]></title><description><![CDATA[<p>sjoe schrieb:</p>
<blockquote>
<p>Ja, aber das lustige ist doch, das der Code unter Linux wunderbar läuft, aber unter Windows stürzt er ab.</p>
</blockquote>
<p>Das sollte dich aber eher zum Schluss führen, dass die Microsoft STL diesbezüglich besser ist, weil sie mehr Fehler anzeigt (man sollte nicht als erstes von einem Bug in der Standardbibliothek ausgehen). Ich denke, die GNU STL ist da vielleicht weniger strikt und lässt gewisse Dinge durchgehen. Dass da ein paar Sachen mehr &quot;funktionieren&quot;, liegt sehrwahrscheinlich am undefinierten Verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1786021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1786021</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 29 Sep 2009 15:15:36 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 18:49:09 GMT]]></title><description><![CDATA[<blockquote>
<p>Das sollte dich aber eher zum Schluss führen, dass die Microsoft STL diesbezüglich besser ist, weil sie mehr Fehler anzeigt (man sollte nicht als erstes von einem Bug in der Standardbibliothek ausgehen). Ich denke, die GNU STL ist da vielleicht weniger strikt und lässt gewisse Dinge durchgehen. Dass da ein paar Sachen mehr &quot;funktionieren&quot;, liegt sehrwahrscheinlich am undefinierten Verhalten.</p>
</blockquote>
<p>das wiederum halte ich fuer eine gewagte These <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 mir im Allgemeinen angewoehnt Fehler immer zuerst in meinem Code zu suchen und zwar bei der Verwendung jeglichem nicht von mir geschribenen Code. in einem Grossteil der Faelle liege ich damit richtig.</p>
<p>Kann aber auch an mir liegen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1786194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1786194</guid><dc:creator><![CDATA[TheBigW]]></dc:creator><pubDate>Tue, 29 Sep 2009 18:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit STL-Vector von Microsoft on Tue, 29 Sep 2009 19:07:08 GMT]]></title><description><![CDATA[<p>TheBigW schrieb:</p>
<blockquote>
<p>Ich hab mir im Allgemeinen angewoehnt Fehler immer zuerst in meinem Code zu suchen und zwar bei der Verwendung jeglichem nicht von mir geschribenen Code. in einem Grossteil der Faelle liege ich damit richtig.</p>
</blockquote>
<p>Bei Code von Arbeitskollegen oder eher neueren bzw. nicht ausführlich getesteten Frameworks, ja. Bei Problemen mit der STL würde ich den Fehler allerdings nicht als erstes in der Standardbibliothek selbst suchen. Gerade weil die Microsoft-Assertions sehr genau angeben, wo ein Fehler aufgetreten ist, und man so mit grosser Wahrscheinlichkeit den Fehler bei sich findet (wenn man sich ein wenig auskennt). Ich zumindest habe noch nie einen Bug in der Standardbibliothek entdeckt. Designfehler schon, aber das liegt nicht an der Implementierung.</p>
<p>Abgesehen davon erinnert &quot;das lustige ist doch, das der Code unter Linux wunderbar läuft, aber unter Windows stürzt er ab&quot; ein wenig an einen typischen Bash und die fehlende Bereitschaft, eigene Fehler zuzugeben. <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/1786203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1786203</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 29 Sep 2009 19:07:08 GMT</pubDate></item></channel></rss>