<?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[Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe folgendes Problem und zwar habe ich ein Progi geschrieben, welches bei mir einwandfrei funktioniert, jedoch nicht bei meinem Kollgen, der allerdings die selbe BCB Version (6.0) verwendet wie ich. Hier mal etwas Code:</p>
<pre><code class="language-cpp">while(!fertig){ 
   ...  
   cout &lt;&lt; &quot;Geben Sie die Zahl ein: (q zum Beenden) &quot;; //String einlesen
   cin &gt;&gt; FloatString;                                 
   if(Number)                                          //Wenn Speicher reserviert
   {
      delete [] Number;                                //Speicher freigeben
      Number = NULL;
   }
   else;
   Number = new char[FloatString.length()];            //Speicher neu reservieren
   Number = FloatString.c_str();
   pNumber = &amp;Number[0];
   ch = *pNumber++;
   ...
}
</code></pre>
<p>dieser teil sollte ausreichen. Das Problem ist nun folgendes, wie gesagt, bei mir funzt und beim Kollgen erhält er beim zweiten Schleifendurchlauf eine Zugriffsverletzung bei Adresse blablabla und der Debugger zeigt auf folgende Zeile:</p>
<pre><code class="language-cpp">delete [] Number;                                //Speicher freigeben
</code></pre>
<p>Hat jemand eine Ahung, woran das liegen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/107572/zugriffsverletzung-auf-frendem-pc-jedoch-nicht-auf-dem-eigenen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 17:50:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/107572.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Apr 2005 19:25:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Wed, 20 Apr 2005 19:25:50 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich habe folgendes Problem und zwar habe ich ein Progi geschrieben, welches bei mir einwandfrei funktioniert, jedoch nicht bei meinem Kollgen, der allerdings die selbe BCB Version (6.0) verwendet wie ich. Hier mal etwas Code:</p>
<pre><code class="language-cpp">while(!fertig){ 
   ...  
   cout &lt;&lt; &quot;Geben Sie die Zahl ein: (q zum Beenden) &quot;; //String einlesen
   cin &gt;&gt; FloatString;                                 
   if(Number)                                          //Wenn Speicher reserviert
   {
      delete [] Number;                                //Speicher freigeben
      Number = NULL;
   }
   else;
   Number = new char[FloatString.length()];            //Speicher neu reservieren
   Number = FloatString.c_str();
   pNumber = &amp;Number[0];
   ch = *pNumber++;
   ...
}
</code></pre>
<p>dieser teil sollte ausreichen. Das Problem ist nun folgendes, wie gesagt, bei mir funzt und beim Kollgen erhält er beim zweiten Schleifendurchlauf eine Zugriffsverletzung bei Adresse blablabla und der Debugger zeigt auf folgende Zeile:</p>
<pre><code class="language-cpp">delete [] Number;                                //Speicher freigeben
</code></pre>
<p>Hat jemand eine Ahung, woran das liegen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771615</guid><dc:creator><![CDATA[wedmer]]></dc:creator><pubDate>Wed, 20 Apr 2005 19:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Wed, 20 Apr 2005 19:33:08 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>was für einen Typ genau hat denn Number?</p>
<p>Und außerdem vermischt du C, C++ und VCL in schlimmer Weise.<br />
Ich empfehle dir eine reine Konsolen-C++ Lösung mit std::string und stringstream.<br />
Also sachau mal ins C++ Forum.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771620</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 20 Apr 2005 19:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Wed, 20 Apr 2005 20:28:32 GMT]]></title><description><![CDATA[<p>Number ist vom Typ <strong>char</strong>* und FloatString ist vom Typ <strong>string</strong>.<br />
wo vermische ich hier C,C++ und VCL?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771668</guid><dc:creator><![CDATA[wedmer]]></dc:creator><pubDate>Wed, 20 Apr 2005 20:28:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Wed, 20 Apr 2005 20:55:40 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich war wegen FloatString.c_str() und weil der Thread im BCB-Forum ist der Auffassung, das FloatString ein AnsiString ist. Aber so sieht das doch schon anders aus.</p>
<p>Ich frage mich allerdings, wozu du diesen *char ** brauchst. std::string bietet doch ebenfalls Zugriff auf die einzelen chars.<br />
Ich bin mir auch nicht sicher, ob *char ** wirklich mit <em>delete []</em> gelöscht werden dürfen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771686</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 20 Apr 2005 20:55:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Wed, 20 Apr 2005 21:32:25 GMT]]></title><description><![CDATA[<p>den char* benötige ich, weil dies die Aufgabenstellung des Dozenten war. Wir müssen als Übung eine Statemachine Programmieren, welche ein Char-Array in ein Float umrechnet. Den String brauche ich bloss bei der Eingabe, um das Programm zu testen und da unser netter Dozent sicherlich das Programm auf Herz und Nieren test, beuge ich so einem allfälligen overflow vor, wie er auftretten könnte wenn ich direkt in das Char Array einlese.<br />
Ich dachte, wenn ich Speicherplatz mit <strong>new []</strong> reserviere muss ich ihn anschliessend auch mit <strong>delete []</strong> wieder freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771712</guid><dc:creator><![CDATA[wedmer]]></dc:creator><pubDate>Wed, 20 Apr 2005 21:32:25 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Wed, 20 Apr 2005 21:54:21 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>dein Problem ist die fehlerhafte Kopieraktion :</p>
<pre><code class="language-cpp">Number = new char[FloatString.length()]; //Speicher neu reservieren
Number = FloatString.c_str(); // Speicher wird aufgegeben und Zeiger auf neuen Wert gesetzt
</code></pre>
<p>so muß es (meiner Meinung nach) richtig aussehen :</p>
<pre><code class="language-cpp">Number = new char(FloatString.length());
strcat(Number, FloatString.c_str()); // So wird der Inhalt von C-Strings kopiert
... // Number benutzen
delete Number;
</code></pre>
<p>Allerdings benutze ich schon lange keine reinen C-Strings mehr (du siehst warum).<br />
Das Thema ist wohl im C++ Forum besser aufgehoben.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771730</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 20 Apr 2005 21:54:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Thu, 21 Apr 2005 07:34:41 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a><br />
Das ist noch nicht ganz korrekt. Da fehlt noch der Platz für das '\0' und die Klammer ist falsch (char hat keinen Konstruktor).<br />
also</p>
<pre><code class="language-cpp">Number = new char[FloatString.length()+1];
strcpy(Number, FloatString.c_str()); // So wird der Inhalt von C-Strings kopiert
... // Number benutzen
delete[] Number;
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8198">@wedmer</a></p>
<blockquote>
<p>Ich dachte, wenn ich Speicherplatz mit new [] reserviere muss ich ihn anschliessend auch mit delete [] wieder freigeben.</p>
</blockquote>
<p>Das ist auch richtig so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771815</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 21 Apr 2005 07:34:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Thu, 21 Apr 2005 07:48:21 GMT]]></title><description><![CDATA[<p>akari schrieb:</p>
<blockquote>
<p>Ich bin mir auch nicht sicher, ob *char ** wirklich mit <em>delete []</em> gelöscht werden dürfen.</p>
</blockquote>
<p>generell ist alles was mit <strong>new []</strong> erstellt wurde auch mit <strong>delete []</strong> zu löschen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771825</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Thu, 21 Apr 2005 07:48:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Thu, 21 Apr 2005 07:53:36 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a>: Ausserdem empfiehlt sich die Verwendung von strncpy und das komplette Streichen von strcpy aus dem Gedächnis.</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771830</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 21 Apr 2005 07:53:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Thu, 21 Apr 2005 07:56:38 GMT]]></title><description><![CDATA[<p>Prinzipiell ist das natürlich richtig. In diesem Fall kann allerdings nichts passieren, da die Länge des String ja bekannt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771833</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 21 Apr 2005 07:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Thu, 21 Apr 2005 08:00:31 GMT]]></title><description><![CDATA[<p>Klar. Nur wer weiss, welche Mutationen noch in den Code kommen? (o;</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/771838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/771838</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 21 Apr 2005 08:00:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung auf frendem PC jedoch nicht auf dem eigenen on Sat, 23 Apr 2005 11:31:36 GMT]]></title><description><![CDATA[<p>Ok, so funktionierte es. Hab allerdings noch ne kleine Frage und zwar hab ich festgestellt, dass bei strncpy das CharArray nicht terminiert wird <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="😕"
    /> mach ich das etwas falsch, oder ist das wirklich so?<br />
Deshalb habe ich es jetzt so gelöst.</p>
<pre><code class="language-cpp">cin &gt;&gt; FloatString;
if(Number)
{
   delete [] Number;
   Number = NULL;
}
else;
Number = new char[FloatString.length()+1];
strncpy(Number, FloatString.c_str(),FloatString.length());
Number[FloatString.length()] = '\0';
pNumber = &amp;Number[0];
ch = *pNumber++;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/773512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/773512</guid><dc:creator><![CDATA[wedmer]]></dc:creator><pubDate>Sat, 23 Apr 2005 11:31:36 GMT</pubDate></item></channel></rss>