<?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[Überschreiben des Speichers]]></title><description><![CDATA[<p>Ich lerne C++ in der Schule und ich bin dem Stoff schon weit vorraus, aber mein Lehrer ( C verrückter bei dem man mehr von C als von C++lernt ) hat neulich etwas interessantes erklärt:</p>
<p>Er sagte, dass Funktionen wie scanf, strcat, strcpy u.s.w. bei char-Feldern den reservierten Speicher in bestimmten Fällen ( Beispiele könnt ihr euch ja denken ) überschreiben.</p>
<p>Stimmts; und wenn, funktioniert es mit cin richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/165719/überschreiben-des-speichers</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 19:28:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/165719.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Nov 2006 13:46:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überschreiben des Speichers on Wed, 22 Nov 2006 13:46:09 GMT]]></title><description><![CDATA[<p>Ich lerne C++ in der Schule und ich bin dem Stoff schon weit vorraus, aber mein Lehrer ( C verrückter bei dem man mehr von C als von C++lernt ) hat neulich etwas interessantes erklärt:</p>
<p>Er sagte, dass Funktionen wie scanf, strcat, strcpy u.s.w. bei char-Feldern den reservierten Speicher in bestimmten Fällen ( Beispiele könnt ihr euch ja denken ) überschreiben.</p>
<p>Stimmts; und wenn, funktioniert es mit cin richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179259</guid><dc:creator><![CDATA[|M|]]></dc:creator><pubDate>Wed, 22 Nov 2006 13:46:09 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben des Speichers on Wed, 22 Nov 2006 13:58:12 GMT]]></title><description><![CDATA[<p>Ja, das stimmt - Funktionen auf char* Basis kontrollieren nicht, wieviel Speicher sie wirklich zur Verfügung haben. Aber das kann dir mit cin auch passieren, wenn du mit nackten char-Arrays arbeitest. (std::string passt auf, wieviele Daten eingelesen werden und vergrößert im Notfall seinen Speicher)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179268</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 22 Nov 2006 13:58:12 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben des Speichers on Wed, 22 Nov 2006 14:03:05 GMT]]></title><description><![CDATA[<p>Danke, dass mit std::string wusste ich auch.<br />
Müsste man Jetzt jedesmal wenn man ein char-feld einlesen möchte mit Schleifen und getch() oder cin.get() arbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179279</guid><dc:creator><![CDATA[|M|]]></dc:creator><pubDate>Wed, 22 Nov 2006 14:03:05 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben des Speichers on Wed, 22 Nov 2006 14:08:08 GMT]]></title><description><![CDATA[<p>|M| schrieb:</p>
<blockquote>
<p>Danke, dass mit std::string wusste ich auch.<br />
Müsste man Jetzt jedesmal wenn man ein char-feld einlesen möchte mit Schleifen und getch() oder cin.get() arbeiten?</p>
</blockquote>
<p>Hi,</p>
<p>ich würde der Einfachheit halber einen string einlesen und danach prüfen, ob der Inhalt in das char-Feld passt (s.length() &lt; sizeof(charArray);)....<br />
Wenn ja: Kopieren.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179285</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 22 Nov 2006 14:08:08 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben des Speichers on Wed, 22 Nov 2006 14:10:46 GMT]]></title><description><![CDATA[<p>Danke, aber ich habe nicht nach alternativen gesucht.<br />
Es ging mir nur darum mein wissen abzurunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179289</guid><dc:creator><![CDATA[|M|]]></dc:creator><pubDate>Wed, 22 Nov 2006 14:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben des Speichers on Wed, 22 Nov 2006 14:14:10 GMT]]></title><description><![CDATA[<p>Sorry, man kann seine Beiträge als nicht-Mitglied nicht ändern.<br />
Ich habe mich Falsch ausgedrückt.<br />
Ich wollte einfach nur bei meinen char-feldern bleiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179292</guid><dc:creator><![CDATA[|M|]]></dc:creator><pubDate>Wed, 22 Nov 2006 14:14:10 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben des Speichers on Wed, 22 Nov 2006 14:27:49 GMT]]></title><description><![CDATA[<blockquote>
<p>scanf, strcat, strcpy</p>
</blockquote>
<p>Diese Funktionen sind unsicher richtig. deshalb sollt man bei denen auch genau wissen was man tut.<br />
oftmals weiss man eben nicht, was in einem qellstring drinnesteht ....</p>
<p>nen strlen z.b. zaehlt die zeichen bis zum ersten vorkommen von 0<br />
wenn du nen speicherbereich hasst wo kein 0 drinnesteht, zaehlt er quasi ueber deine variable hinaus ... die lustigsten effekte sind dann die folge.<br />
genau so wie strcat ned pruefen kann ob genug speicher reserviert wurde.</p>
<p>die dinger sind also quasi so sicher, wie du sorgfaeltig alle bedingungen abpruefen kannst. meist schreibt man dann ca 80% checkroutinen und nur noch 20% wirklichen code ^^</p>
<p>ne alternative sind die strn... funktionen, da wird der speicher begrenzt in dem reinschreiben kann ....<br />
bei nem<br />
char[128] buffer;<br />
....<br />
strncat(strbuffer,128,&quot;was weiss ich&quot;);<br />
beim strncat selber kann z.b. ned mehr ganz so viel schiefgehen ... aber nicht vergessen, wenn der string ned reinpasst, schreibt er kein terminate zeichen ^^ tolle fehlerquellen fuer nachher ^^</p>
<p>eigentlich sollt man in c++ keine c-strings mehr verwenden ... aber leider sind die c ellipsenfunktionen (scanf, sprintf) zwar nicht typsicher, eigentlich insgesamt total unsicher, aber meist um vieles handlicher als die entsprechenden c++ streamfunktionen ....</p>
<p>Ciao ---</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179301</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Wed, 22 Nov 2006 14:27:49 GMT</pubDate></item><item><title><![CDATA[Reply to Überschreiben des Speichers on Wed, 22 Nov 2006 15:47:54 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>...<br />
ne alternative sind die strn... funktionen, da wird der speicher begrenzt in dem reinschreiben kann ....</p>
</blockquote>
<p>Finde ich prinzipiell auch gut und richtig (vA snprintf()), aber bei unserem Compiler hier (IBM xlC V1.8 f. zOS) ist strncpy() offensichtlich nur ein &quot;Alias&quot; auf memcpy(). Da Letzterer aber immer die komplette Zahl an Bytes kopiert (und sich natürlich nicht um '\0'-Bytes kümmert), wird die Verwendung davon nicht wirklich sicherer. <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="😡"
    /> <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="😡"
    /> <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>
<p>OK, man greift zwar nur lesend auf unerlaubten Speicher zu, aber wirklich toll finde ich das auch nicht - dann lieber ein &quot;echtes strcpy()&quot;, bei dem jeder um die Gefahr weiß, als so'n Sch***.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179402</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 22 Nov 2006 15:47:54 GMT</pubDate></item></channel></rss>