<?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[Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler?]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe folgendes Problem in Visual Studio <a href="http://2003.net" rel="nofollow">2003.net</a>. Folgender Code sollte doch einen Fehler generieren:</p>
<pre><code class="language-cpp">unsigned char test[10];
test[15] = 3;
</code></pre>
<p>Mein Visual Studio akzeptiert aber die Zuweisung!! Weiss jemand was ich in VS einstellen muss damit hier wirklich ein Fehler ausgeworfen wird?</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244461/zugriff-auf-nicht-existierendes-element-in-einem-array-vs2003-kein-fehler</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 09:49:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244461.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Jun 2009 15:09:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Tue, 30 Jun 2009 15:09:35 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe folgendes Problem in Visual Studio <a href="http://2003.net" rel="nofollow">2003.net</a>. Folgender Code sollte doch einen Fehler generieren:</p>
<pre><code class="language-cpp">unsigned char test[10];
test[15] = 3;
</code></pre>
<p>Mein Visual Studio akzeptiert aber die Zuweisung!! Weiss jemand was ich in VS einstellen muss damit hier wirklich ein Fehler ausgeworfen wird?</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735125</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Tue, 30 Jun 2009 15:09:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Tue, 30 Jun 2009 15:16:24 GMT]]></title><description><![CDATA[<p>As designed.<br />
Siehe <a href="http://de.wikipedia.org/wiki/Puffer%C3%BCberlauf" rel="nofollow">http://de.wikipedia.org/wiki/Pufferüberlauf</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735129</guid><dc:creator><![CDATA[bgdnoy]]></dc:creator><pubDate>Tue, 30 Jun 2009 15:16:24 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Tue, 30 Jun 2009 15:17:57 GMT]]></title><description><![CDATA[<p>traceman schrieb:</p>
<blockquote>
<p>Folgender Code sollte doch einen Fehler generieren:</p>
</blockquote>
<p>Nein, das Verhalten dieses Codes ist <em>undefiniert</em>. Willkommen in C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735130</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 30 Jun 2009 15:17:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Tue, 30 Jun 2009 15:52:02 GMT]]></title><description><![CDATA[<p>traceman schrieb:</p>
<blockquote>
<p>Folgender Code sollte doch einen Fehler generieren:</p>
</blockquote>
<p>Wie die anderen schon geschrieben haben, ist dies unmöglich. C++ fordert eine gewisse Disziplin was die Programmierung angeht, dafür &quot;bezahlt&quot; man nur für das was man einsetzt.</p>
<p>Eine Alternative sind die Standardcontainer (Speziell std::vector und std::tr1::array, letzteres musst du aber unter VC2003 nachrüsten [z.B. über Boost] um in den Genuss zu kommen).</p>
<p>So bietet der vector beispielsweise einmal den Indexoperator [] und die Methode &quot;at&quot; an, um auf ein Element zuzugreifen. Ersterer muss keine Bereichsprüfungen durchführen (wobei dies der Standard auch nicht verbietet, in der Regel wird hier aber die performante [ungeprüfte] Variante gewählt), &quot;at&quot; wiederum prüft auf Indexüberschreitung und wirft in diesem Fall eine Exception (std::out_of_range).</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

int main()
{
  std::vector&lt;int&gt; test(10, 0);
  test.at(15) = 12; // Liefert eine Exception bei Indexüberschreitung
  // test[15] = 12; =&gt; Kann, aber muss keine Exception werfen
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1735149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735149</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 30 Jun 2009 15:52:02 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Tue, 30 Jun 2009 18:57:13 GMT]]></title><description><![CDATA[<p>Wieso gibts dann bei einem kollegen der die selbe umgebung hat mit dem selben programm eine exception: stack overflow?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735204</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Tue, 30 Jun 2009 18:57:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Tue, 30 Jun 2009 19:11:33 GMT]]></title><description><![CDATA[<p>traceman schrieb:</p>
<blockquote>
<p>Wieso gibts dann bei einem kollegen der die selbe umgebung hat mit dem selben programm eine exception: stack overflow?</p>
</blockquote>
<p>Weil das Verhalten <strong>undefiniert</strong> ist. Du kannst dich nicht darauf verlassen, dass etwas bestimmtes passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735214</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 30 Jun 2009 19:11:33 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Tue, 30 Jun 2009 19:14:09 GMT]]></title><description><![CDATA[<p>Das musst du schon deinen Compiler fragen. Im Debug-Modus übersetzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735215</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 30 Jun 2009 19:14:09 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Tue, 30 Jun 2009 22:18:25 GMT]]></title><description><![CDATA[<p>traceman schrieb:</p>
<blockquote>
<p>Wieso gibts dann bei einem kollegen der die selbe umgebung hat mit dem selben programm eine exception: stack overflow?</p>
</blockquote>
<p>...davon abgesehen das es sich hierbei nicht um eine Exception im C++ Sinne handelt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735299</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 30 Jun 2009 22:18:25 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Tue, 30 Jun 2009 22:56:42 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14941">@asc</a>: selbst eine Exception im C++ Sinne darf fliegen, da das Verhalten ja undefiniert ist <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="🙂"
    /><br />
(Und es gibt ja auch einige Compiler/Plattformen die solche Fehler in C++ Exceptions &quot;übersetzen&quot; können - MSVC z.B.)</p>
<p>Bashar schrieb:</p>
<blockquote>
<p>Willkommen in C++.</p>
</blockquote>
<p>Genau <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/1735305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735305</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 30 Jun 2009 22:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 07:24:26 GMT]]></title><description><![CDATA[<p>Also ich hab mal ein ganz neues Projekt aufgemacht (kein c++!!) dann im Debugmodus gestartet und nichts passiert..ob es eine Exception ist oder nicht ist mir jetzt zunächst mal egal er soll mir einen Fehler anzeigen! Wie gesagt ich benutze den Standard Compiler der mit dem Visual Studio <a href="http://2003.net" rel="nofollow">2003.net</a> mitgeliefert wird.</p>
<pre><code class="language-cpp">// tt.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include &quot;stdafx.h&quot;

int _tmain(int argc, _TCHAR* argv[])
{
	unsigned char test[10];

	test[15] = 9;

	return 0;
}
</code></pre>
<p>Nochmal: Wieso kommt bei einem Kollegen eine Fehlermeldung aber bei mir nicht? Unlösbares Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735348</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Wed, 01 Jul 2009 07:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 07:23:59 GMT]]></title><description><![CDATA[<p>oje... bist Du schwer von Begriff?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735351</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 01 Jul 2009 07:23:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 07:26:48 GMT]]></title><description><![CDATA[<p>traceman schrieb:</p>
<blockquote>
<p>Also ich hab mal ein ganz neues Projekt aufgemacht dann im Debugmodus gestartet und nichts passiert...<br />
Nochmal: Wieso kommt bei einem Kollegen eine Fehlermeldung aber bei mir nicht?</p>
</blockquote>
<p>Du liest also entweder die Antworten nicht, oder ignorierst sie. Das Verhalten bei einer Indexüberschreitung eines C-Arrays ist und bleibt undefiniert. Greif zu den Containern der C++ Standardbibliothek, und dort zu den geprüften aufrufen wenn du ein anderes Verhalten haben willst! (Nochmal der Verweis auf std::vector/std::tr1::array und die &quot;at&quot;-Methode).</p>
<p>Undefiniert ist und bleibt undefiniert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735353</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 01 Jul 2009 07:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 07:30:22 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>oje... bist Du schwer von Begriff?</p>
</blockquote>
<p>Muss das sein?</p>
<p>Das Verhalten ist zwar nicht definiert, das heißt aber nicht, dass das Verhalten bei einem bestimmten Compiler vollkommen nichtdeterministisch ist. Der generiert ja irgendwelchen Maschinencode dafür, und die Frage, warums beim Kollegen kracht und hier nicht, ist auf jeden Fall berechtigt. Nur kann man die leider nicht so einfach beantworten. Dazu müsste man die genaue Fehlermeldung erstmal kennen. Man müsste vielleicht den Assemblercode mal im Vergleich sehen, ob es doch an irgendwelchen Einstellungen liegt. Compilerversion? Und so weiter, das aus der hohlen Hand zu beantworten ist nicht so einfach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735355</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 01 Jul 2009 07:30:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 07:34:55 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>theta schrieb:</p>
<blockquote>
<p>oje... bist Du schwer von Begriff?</p>
</blockquote>
<p>Muss das sein?</p>
</blockquote>
<p>Nein, muss nicht sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735356</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 01 Jul 2009 07:34:55 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 07:42:13 GMT]]></title><description><![CDATA[<p>ok ich werde mir noch mal die fehlermeldung vom kollegen genauer anschauen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735361</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Wed, 01 Jul 2009 07:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 07:51:32 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>theta schrieb:</p>
<blockquote>
<p>oje... bist Du schwer von Begriff?</p>
</blockquote>
<p>Muss das sein?</p>
<p>Das Verhalten ist zwar nicht definiert, das heißt aber nicht, dass das Verhalten bei einem bestimmten Compiler vollkommen nichtdeterministisch ist. Der generiert ja irgendwelchen Maschinencode dafür, und die Frage, warums beim Kollegen kracht und hier nicht, ist auf jeden Fall berechtigt. Nur kann man die leider nicht so einfach beantworten. Dazu müsste man die genaue Fehlermeldung erstmal kennen. Man müsste vielleicht den Assemblercode mal im Vergleich sehen, ob es doch an irgendwelchen Einstellungen liegt. Compilerversion? Und so weiter, das aus der hohlen Hand zu beantworten ist nicht so einfach.</p>
</blockquote>
<p>Es ist doch möglicherweise nichtdeterministisch. Wenn ich auf Speicher zugreife, welcher mir nicht gehört, dann könnte der Speicher entweder zugreifbar sein oder nicht. Das ist nicht nur vom Compiler sondern auch vom Betriebssystem abhängig. Denkbar wäre sogar eine Situation, dass das Programm sich auf dem selben Rechner unterschiedlich verhält, je nachdem, welche Programme gerade laufen oder gerade gelaufen sind. Daher sollte sich jede weitere Nachforschung erübrigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735367</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Wed, 01 Jul 2009 07:51:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 08:03:28 GMT]]></title><description><![CDATA[<p>traceman schrieb:</p>
<blockquote>
<p>ok ich werde mir noch mal die fehlermeldung vom kollegen genauer anschauen..</p>
</blockquote>
<p>Und was soll das bringen?</p>
<p>Sorry, aber Dein Problem liegt weder in Deinem Code noch in dem Deines Kollegen ... und auch nicht in Deinen oder seinen Fehlermeldungen.</p>
<p><em><strong>DU ERWARTEST DAS FALSCHE!!!</strong></em></p>
<p>Oder ganz kurz:</p>
<hr />
<p>Compiler =&gt; recht<br />
Du =&gt; unrecht</p>
<hr />
<p><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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735375</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 01 Jul 2009 08:03:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 08:11:13 GMT]]></title><description><![CDATA[<p>vielleicht kann jmnd versuchen ihm das so zu erklären, dass ER es versteht.</p>
<p>meine idee wäre:</p>
<p>Die Zuweisung &quot;kann&quot; so funktionieren, aber evlt steht an der stelle im Speicher schon was, und es kommt deswegen zu einem &quot;stack overflow ?</p>
<p>geht das in die richtige richtung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735380</guid><dc:creator><![CDATA[Keithy]]></dc:creator><pubDate>Wed, 01 Jul 2009 08:11:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 08:17:30 GMT]]></title><description><![CDATA[<p>Keithy schrieb:</p>
<blockquote>
<p>vielleicht kann jmnd versuchen ihm das so zu erklären, dass ER es versteht.</p>
</blockquote>
<p>das bezweifle ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735383</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 01 Jul 2009 08:17:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 08:41:53 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>&quot;Let there be Licht...&quot;</p>
</blockquote>
<p>nur kompetente Leute hier..das muss man schon sagen <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/1735394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735394</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Wed, 01 Jul 2009 08:41:53 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 09:14:35 GMT]]></title><description><![CDATA[<p>Es ist doch eigentlich eine ganz einfache Erklärung:</p>
<pre><code class="language-cpp">unsigned char test[10];
test[15] = 3;
</code></pre>
<p>Bei der zweiten Zeile bzw. bei <code>test[X]</code> findet keine Überprüfung statt, ob der Array-Index gültig ist.</p>
<p>Bei der Zuweisung der 3 auf <code>test[15]</code> wird Speicher manipuliert. Und zwar illegal.<br />
Aber das kann und muß keine Auswirkung haben. Beim Kollegen kann Auswirkung stattfinden, weil an <code>test[15]</code> wahrscheinlich Code liegt. Bei einem selber aber nichts bedeutendes liegt.</p>
<p>Es gibt doch eigentlich eine einfach Lösung: keine C-Arrays verwenden!<br />
Sondern <code>std::tr1::array</code> oder <code>std::vector</code> . Beispiel:</p>
<pre><code class="language-cpp">vector&lt;unsigned char&gt; test(10);
test[15] = 3; // C++-Exception beim MSVC 2005! genauer gesagt std::out_of_range
</code></pre>
<p>Der <em>MSVC2008 SP1</em> müsste sogar beim <code>std::tr1:array</code> eine Exception werfen... wenn ich mich nicht täusche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735407</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:14:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 09:19:58 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Es gibt doch eigentlich eine einfach Lösung: keine C-Arrays verwenden!<br />
Sondern <code>std::tr1::array</code> oder <code>std::vector</code> . Beispiel:</p>
</blockquote>
<p>Schlechtes Beispiel. Ich bekomme unter dem MSVC 2008 beispielsweise KEINE Exception, jedenfalls nicht mittels Indexoperators (Nur bei der at-Methode ist die Indexprüfung garantiert). Und das Beispiel steht dazu bereits im 4ten Post des Threads.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735413</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:19:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 09:28:49 GMT]]></title><description><![CDATA[<p>Danke ich habs schon verstanden. Anfangs habe ich Visual Studio verdächtigt weil ich nicht glauben konnte das es ein generelles c problem ist, aber auch weil ich noch nie probleme mit sowas hatte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735416</guid><dc:creator><![CDATA[traceman]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:28:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 10:01:10 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Artchi schrieb:</p>
<blockquote>
<p>Es gibt doch eigentlich eine einfach Lösung: keine C-Arrays verwenden!<br />
Sondern <code>std::tr1::array</code> oder <code>std::vector</code> . Beispiel:</p>
</blockquote>
<p>Schlechtes Beispiel. Ich bekomme unter dem MSVC 2008 beispielsweise KEINE Exception, jedenfalls nicht mittels Indexoperators (Nur bei der at-Methode ist die Indexprüfung garantiert). Und das Beispiel steht dazu bereits im 4ten Post des Threads.</p>
</blockquote>
<p>Ja, in MSVC2008 wurde glaube ich wieder dieses _SECURE_SCL-Makro von MS auf 0 gesetzt (nachdem sich alle bei MSVC2005 aufgeregt haben). Das mußt du wieder einschalten... dann ist auch der Index-Op bei vector sicher!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735434</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 01 Jul 2009 10:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 10:11:57 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Ja, in MSVC2008 wurde glaube ich wieder dieses _SECURE_SCL-Makro von MS auf 0 gesetzt (nachdem sich alle bei MSVC2005 aufgeregt haben). Das mußt du wieder einschalten... dann ist auch der Index-Op bei vector sicher!</p>
</blockquote>
<p>Es ist trotzdem kein Standard. Dass es bei einigen Compilern unter der Bedingung läuft, dass gewisse Makros so oder so definiert sind, tut nichts zur Sache. Man sollte bei <code>operator[]</code> nicht von einer Exception ausgehen, wenn man portabel bleiben will. Genau für diese Fälle wurde ja <code>at()</code> konzipiert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735455</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 01 Jul 2009 10:11:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf nicht existierendes Element in einem Array VS2003 Kein Fehler? on Wed, 01 Jul 2009 10:21:29 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Es ist doch eigentlich eine ganz einfache Erklärung:<br />
[...]<br />
Beim Kollegen kann Auswirkung stattfinden, weil an <code>test[15]</code> wahrscheinlich Code liegt. Bei einem selber aber nichts bedeutendes liegt.</p>
</blockquote>
<p>Sehr, sehr unwahrscheinlich, dass 5 Bytes oberhalb einer beliebigen lokalen Variable Code liegt! Der würde ja beim nächsten Funktionsaufruf schon überschrieben werden. Noch viel unwahrscheinlicher, dass so ein Zugriff dann die Fehlermeldung &quot;Stack Overflow&quot; verursacht. Du machst es dir mit der Erklärung wohl etwas zu einfach.</p>
<p>Dass der Code undefiniertes Verhalten hat, hatten wir schon auf Seite 1 geklärt. Es bleibt einzig und allein das konkret beobachtete Verhalten zu erklären. Beim Debuggen ist das ziemlich nütztlich, um bestimmte Effekte beurteilen zu können. Normalerweise baut man die Fehler ja nicht mit Absicht ein, um sich dann zu wundern ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735466</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 01 Jul 2009 10:21:29 GMT</pubDate></item></channel></rss>