<?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[char* new....]]></title><description><![CDATA[<p>hallo</p>
<pre><code class="language-cpp">[code]
char *pBuffer;
pBuffer = new char;

//..
//..
CFile::Read(pBuffer, length); //length = filesize in bytes
</code></pre>
<p>Mit der o.a. Funktion bekomme ich genau, den im File beinhalteten Text.</p>
<pre><code class="language-cpp">[code]
char *pBuffer;
pBuffer = new char [length];

//..
//..
CFile::Read(pBuffer, length);
</code></pre>
<p>Mache ich es so, ist mein pBuffer auf einmal viel länger, als in length vorgegeben. Nach dem Inhalt von File steht nur noch Müll drin.<br />
warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/125755/char-new</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 09:44:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/125755.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Nov 2005 09:57:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char* new.... on Wed, 09 Nov 2005 09:57:37 GMT]]></title><description><![CDATA[<p>hallo</p>
<pre><code class="language-cpp">[code]
char *pBuffer;
pBuffer = new char;

//..
//..
CFile::Read(pBuffer, length); //length = filesize in bytes
</code></pre>
<p>Mit der o.a. Funktion bekomme ich genau, den im File beinhalteten Text.</p>
<pre><code class="language-cpp">[code]
char *pBuffer;
pBuffer = new char [length];

//..
//..
CFile::Read(pBuffer, length);
</code></pre>
<p>Mache ich es so, ist mein pBuffer auf einmal viel länger, als in length vorgegeben. Nach dem Inhalt von File steht nur noch Müll drin.<br />
warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/912536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/912536</guid><dc:creator><![CDATA[Theresa_Orl]]></dc:creator><pubDate>Wed, 09 Nov 2005 09:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to char* new.... on Wed, 09 Nov 2005 10:07:15 GMT]]></title><description><![CDATA[<p>Ich würde eher vermuten, daß der Datenmüll schon vorher in deinem Puffer lag - Wenn Read() kein Abschlußzeichen ('\0') an die Daten gehängt hat (bei binärer Ein/Ausgabe sehr wahrscheinlich), kommen hinter deinen Daten zufällige Werte, die vorher schon im Speicher standen.</p>
<p>btw, deine erste Variante ist sehr gefährlich, da du dort auf Speicher zugreifst, den du nicht reserviert hast - &quot;pBuffer=new char&quot; holt sich Platz für genau <strong>EIN</strong> Zeichen, der anschließende Read()-Aufruf schreibt in Speicher, der offiziell als unbenutzt gilt (oder gar von anderen Programmteilen belegt wurde).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/912541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/912541</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Nov 2005 10:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to char* new.... on Wed, 09 Nov 2005 10:19:12 GMT]]></title><description><![CDATA[<p>Gut...<br />
wenn nun aber pBuf folgendermaßen init. wird:</p>
<pre><code class="language-cpp">size_t length = 20;
char* pBuf;
pBuf = new char[length];
//...
File::Read(pBuf, length);
</code></pre>
<p>und am Filende nicht nur ein '\0', sondern auch ein EOF steht, warum<br />
steht dann im meinem pBuf....<br />
ab Stelle[23] bis etwa 15 Stellen danach nur Müll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/912553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/912553</guid><dc:creator><![CDATA[Theresa_Orl]]></dc:creator><pubDate>Wed, 09 Nov 2005 10:19:12 GMT</pubDate></item><item><title><![CDATA[Reply to char* new.... on Wed, 09 Nov 2005 10:22:44 GMT]]></title><description><![CDATA[<p>Die Position pBuffer[23] gehört gar nicht mehr zu deinem Puffer, sondern enthält das, was dort zufälligerweise gerade stand - du hast gerade 20 Zeichen gelesen, also darfst du auch nur im Bereich pBuffer[0] bis pBuffer[19] sinnvolle Werte erwarten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/912558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/912558</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Nov 2005 10:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to char* new.... on Wed, 09 Nov 2005 10:27:58 GMT]]></title><description><![CDATA[<p>Das ist mir schon klar.<br />
Nur, wenn ich nach dem Lesen pBuf in einen CString wadndle, habe ich den Müll auch<br />
im CString drinstehen.<br />
Also: wenn buffer[20],<br />
steht im Speicher and Stelle buffer[20] irgendwas - klar.<br />
Mache ich aber:<br />
CString str = buffer;<br />
warum steht dann dort der Müll von buffer[20]??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/912566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/912566</guid><dc:creator><![CDATA[Theresa_Orl]]></dc:creator><pubDate>Wed, 09 Nov 2005 10:27:58 GMT</pubDate></item><item><title><![CDATA[Reply to char* new.... on Wed, 09 Nov 2005 10:33:00 GMT]]></title><description><![CDATA[<p>Theresa_Orl schrieb:</p>
<blockquote>
<p>warum steht dann dort der Müll von buffer[20]??</p>
</blockquote>
<p>Weil alle Stringfunktionen davon ausgehen, dass sie mit nullterminierten Daten arbeiten. Deinen Daten sind nicht nullterminiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/912572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/912572</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 09 Nov 2005 10:33:00 GMT</pubDate></item><item><title><![CDATA[Reply to char* new.... on Wed, 09 Nov 2005 10:38:01 GMT]]></title><description><![CDATA[<p>Das wars.<br />
Danke für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/912579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/912579</guid><dc:creator><![CDATA[Theresa_Orl]]></dc:creator><pubDate>Wed, 09 Nov 2005 10:38:01 GMT</pubDate></item><item><title><![CDATA[Reply to char* new.... on Wed, 09 Nov 2005 10:38:29 GMT]]></title><description><![CDATA[<p>reservier doch Platz für ein zusätzliches Zeichen und schreib dir selber eine 0 dahinter.</p>
<pre><code class="language-cpp">pBuffer = new char[length+1]
int ct=file.Read(pBuffer,length);
pBuffer[ct]='\0';
</code></pre>
<p>Danach kannst du den Bereich auch an deine String-Klasse weitergeben.</p>
<p>Alternativ hat CString auch einen Konstruktor, der die Länge des Zielbereiches erwartet:</p>
<pre><code class="language-cpp">int ct=file.Read(pBuffer,length);
CString s(pBuffer,ct);
</code></pre>
<p>Dritte Möglichkeit wäre es, statt CFile ein CStdioFile zu verwenden und die Daten mittels ReadString() ohne Umwege über deinen char*-Puffer einzulesen.</p>
<p>PS: Und ich empfehle dir, solche Fragen im MFC-Board zu stellen - es geht schließlich um MFC-spezifische Klassen <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/912581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/912581</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 Nov 2005 10:38:29 GMT</pubDate></item></channel></rss>