<?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[Run-Time Check Failure #2 - Stack around the variable was corrupted.]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>heute mal etwas anders: Ich erwarte diese Art Exception, aber sie kommt nicht.</p>
<pre><code class="language-cpp">#include &lt;cstring&gt;
using namespace std;
int main()
{
	{
		char ar[10];
		strcpy(ar,&quot;Run-Time Check Failure #2 - Stack around the variable 'ar' was corrupted.&quot;);
	} // Kein Run-Time Check Failure beim Verlassen des Scopes.
}
</code></pre>
<p>Eigentlich war ich mir ziemlich sicher, dass beim Verlassen des Scopes, bei der Freigabe des Speichers von <code>ar</code> , eine Exception fliegt. Das ist aber nicht der Fall, kann mir das einer erklären?</p>
<p>Wohingegen hier</p>
<pre><code class="language-cpp">#include &lt;cstring&gt;
using namespace std;

void fkt()
{
	char ar[10];
    strcpy(ar,&quot;Run-Time Check Failure #2 - Stack around the variable 'ar' was corrupted.&quot;);
} // Run-Time Check Failure beim Verlassen des Scopes.

int main()
{
	fkt();
}
</code></pre>
<p>wie erwartet, eine Exception fliegt.</p>
<p>Danke im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/304761/run-time-check-failure-2-stack-around-the-variable-was-corrupted</link><generator>RSS for Node</generator><lastBuildDate>Sat, 27 Jun 2026 09:17:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304761.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Jun 2012 15:43:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Run-Time Check Failure #2 - Stack around the variable was corrupted. on Wed, 13 Jun 2012 15:43:40 GMT]]></title><description><![CDATA[<p>Guten Abend,</p>
<p>heute mal etwas anders: Ich erwarte diese Art Exception, aber sie kommt nicht.</p>
<pre><code class="language-cpp">#include &lt;cstring&gt;
using namespace std;
int main()
{
	{
		char ar[10];
		strcpy(ar,&quot;Run-Time Check Failure #2 - Stack around the variable 'ar' was corrupted.&quot;);
	} // Kein Run-Time Check Failure beim Verlassen des Scopes.
}
</code></pre>
<p>Eigentlich war ich mir ziemlich sicher, dass beim Verlassen des Scopes, bei der Freigabe des Speichers von <code>ar</code> , eine Exception fliegt. Das ist aber nicht der Fall, kann mir das einer erklären?</p>
<p>Wohingegen hier</p>
<pre><code class="language-cpp">#include &lt;cstring&gt;
using namespace std;

void fkt()
{
	char ar[10];
    strcpy(ar,&quot;Run-Time Check Failure #2 - Stack around the variable 'ar' was corrupted.&quot;);
} // Run-Time Check Failure beim Verlassen des Scopes.

int main()
{
	fkt();
}
</code></pre>
<p>wie erwartet, eine Exception fliegt.</p>
<p>Danke im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222831</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 13 Jun 2012 15:43:40 GMT</pubDate></item><item><title><![CDATA[Reply to Run-Time Check Failure #2 - Stack around the variable was corrupted. on Wed, 13 Jun 2012 15:51:02 GMT]]></title><description><![CDATA[<p>Welche Exception soll denn kommen? Was muss ich mit <code>catch</code> fangen?</p>
<blockquote>
<p>beim Verlassen des Scopes</p>
</blockquote>
<p>Warum erst beim Verlassen, warum nicht bei <code>strcpy</code> ?</p>
<blockquote>
<p>Freigabe des Speichers von ar</p>
</blockquote>
<p>Das ist der Stack, da wird nichts &quot;freigegeben&quot; ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222833</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 13 Jun 2012 15:51:02 GMT</pubDate></item><item><title><![CDATA[Reply to Run-Time Check Failure #2 - Stack around the variable was corrupted. on Wed, 13 Jun 2012 15:55:54 GMT]]></title><description><![CDATA[<p>Du erzeugst lupenreines UB, indem du einfach in nicht-initialisierten Speicher schreibst. Warum sollte dabei eine Exception geworfen werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222837</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 13 Jun 2012 15:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Run-Time Check Failure #2 - Stack around the variable was corrupted. on Wed, 13 Jun 2012 15:56:36 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Welche Exception soll denn kommen? Was muss ich mit <code>catch</code> fangen?</p>
<blockquote>
<p>beim Verlassen des Scopes</p>
</blockquote>
<p>Warum erst beim Verlassen, warum nicht bei <code>strcpy</code> ?</p>
</blockquote>
<p>Eine Gute Frage, kann ich die leider nicht beantworten. Als ich kurz recherchiert hatte, war meist immer zu lesen, dass erst beim Verlassen des Scopes passiert.</p>
<p>knivil schrieb:</p>
<blockquote>
<blockquote>
<p>Freigabe des Speichers von ar</p>
</blockquote>
<p>Das ist der Stack, da wird nichts &quot;freigegeben&quot; ...</p>
</blockquote>
<p>Sondern? Was passiert dann mit den 10Bytes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222838</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 13 Jun 2012 15:56:36 GMT</pubDate></item><item><title><![CDATA[Reply to Run-Time Check Failure #2 - Stack around the variable was corrupted. on Wed, 13 Jun 2012 15:58:20 GMT]]></title><description><![CDATA[<p>Das ist einfach UB - ev. hilft Dir dein Debugger, z.B. VS mit einer Meldung.</p>
<p>Edit: Oder meinst Du mit Exception sowas wie ein Seg. Fault bzw. Access Violation ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222839</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 13 Jun 2012 15:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to Run-Time Check Failure #2 - Stack around the variable was corrupted. on Wed, 13 Jun 2012 16:19:19 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>Das ist einfach UB - ev. hilft Dir dein Debugger, z.B. VS mit einer Meldung.</p>
<p>Edit: Oder meinst Du mit Exception sowas wie ein Seg. Fault bzw. Access Violation ?</p>
</blockquote>
<p>Jetzt wo du es erwähnst fällt mir gerade auf, dass das gar keine Exception ist, was VS mir da an den Kopf wirft. Eine Exception wie Seg. Fault bzw. Access Violation bekommt man nicht, weil es für rohe Arrays keine Range-Überwachung gibt, oder? Bzw. Range-Überwachung kann es ja immer nur bei benutzerdefinierten Datentypen geben, da man dort den <code>[]</code> Operator überladen und somit eine Rang-Prüfung durchführen kann.</p>
<p>Und wieso kann man beim Stack nicht von Speicherfreigabe reden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222845</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 13 Jun 2012 16:19:19 GMT</pubDate></item></channel></rss>