<?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[Unterschied char myCharArray[100] und char* pMyArray = new char[100]]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich rufe eine Funktion auf, die einen char-Buffer übergeben bekommt.</p>
<p>Wenn ich die Funktion folgendermaßen aufrufe</p>
<pre><code class="language-cpp">char myCharArray[100];
SomeFunction(myCharArray);
</code></pre>
<p>enthält myCharArray den gewünschten Text und ist offensichtlich mit '\0&quot; terminiert.</p>
<p>Wenn ich das stattdessen folgendermaßen mache</p>
<pre><code class="language-cpp">int iNumChars = GetNumCharsToReceive();
char* pMyCharArray = new char[iNumChars + 1];
SomeFunction(pMyCharArray);
</code></pre>
<p>erhalte ich zwar auch den gewünschten Text, allerdings fehlt anscheinend das abschließende '\0'.<br />
Muss ich das im zweiten Fall immer selbst anfügen, oder mache ich hier grundsätzlich was falsch.</p>
<p>Wäre dankbar für eine kurze Erläuterung.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/283188/unterschied-char-mychararray-100-und-char-pmyarray-new-char-100</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 18:25:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/283188.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Mar 2011 10:10:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unterschied char myCharArray[100] und char* pMyArray = new char[100] on Mon, 07 Mar 2011 10:10:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich rufe eine Funktion auf, die einen char-Buffer übergeben bekommt.</p>
<p>Wenn ich die Funktion folgendermaßen aufrufe</p>
<pre><code class="language-cpp">char myCharArray[100];
SomeFunction(myCharArray);
</code></pre>
<p>enthält myCharArray den gewünschten Text und ist offensichtlich mit '\0&quot; terminiert.</p>
<p>Wenn ich das stattdessen folgendermaßen mache</p>
<pre><code class="language-cpp">int iNumChars = GetNumCharsToReceive();
char* pMyCharArray = new char[iNumChars + 1];
SomeFunction(pMyCharArray);
</code></pre>
<p>erhalte ich zwar auch den gewünschten Text, allerdings fehlt anscheinend das abschließende '\0'.<br />
Muss ich das im zweiten Fall immer selbst anfügen, oder mache ich hier grundsätzlich was falsch.</p>
<p>Wäre dankbar für eine kurze Erläuterung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030696</guid><dc:creator><![CDATA[CharArrayUser]]></dc:creator><pubDate>Mon, 07 Mar 2011 10:10:37 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied char myCharArray[100] und char* pMyArray = new char[100] on Mon, 07 Mar 2011 10:39:51 GMT]]></title><description><![CDATA[<p>Der 0er fehlt, du musst ihr selbst anfügen, richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030709</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 07 Mar 2011 10:39:51 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied char myCharArray[100] und char* pMyArray = new char[100] on Mon, 07 Mar 2011 10:53:31 GMT]]></title><description><![CDATA[<p>Danke für die Info.</p>
<p>Mir ist allerdings nicht ganz klar, warum das im ersten Fall anders ist. Wenn die Funktion, die den Buffer befüllt nicht dafür sorgt, dass '\0' an das Ende gesetzt wird, sollte das doch in beiden Fällen so sein, oder?</p>
<p>Ist aber eigentlich nicht so wichtig. Es hätte mich einfach interessiert, ob es diesbezüglich einen Unterschied gibt, ob ich das char-array dynamisch erzeuge, oder nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030715</guid><dc:creator><![CDATA[CharArrayUser]]></dc:creator><pubDate>Mon, 07 Mar 2011 10:53:31 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied char myCharArray[100] und char* pMyArray = new char[100] on Mon, 07 Mar 2011 10:57:00 GMT]]></title><description><![CDATA[<p>CharArrayUser schrieb:</p>
<blockquote>
<p>Wenn ich die Funktion folgendermaßen aufrufe</p>
<pre><code class="language-cpp">char myCharArray[100];
SomeFunction(myCharArray);
</code></pre>
<p>enthält myCharArray den gewünschten Text und ist offensichtlich mit '\0&quot; terminiert.</p>
<p>Wenn ich das stattdessen folgendermaßen mache</p>
<pre><code class="language-cpp">int iNumChars = GetNumCharsToReceive();
char* pMyCharArray = new char[iNumChars + 1];
SomeFunction(pMyCharArray);
</code></pre>
<p>erhalte ich zwar auch den gewünschten Text, allerdings fehlt anscheinend das abschließende '\0'.</p>
</blockquote>
<p>Wenn im zweiten Fall die '\0' am Ende fehlt, dann scheint die Funktion SomeFunction einfach keine Nullterminierung zu erzeugen. Dass es im ersten Fall zu klappen scheint, kann man mit &quot;Glück&quot; erklären, oder damit, dass Du uns nicht den richtigen Code gezeigt hast. In keinem Fall garantiert der C++ standard, dass die char-Werte irgend eine bestimmte Belegung haben vor dem Aufruf Deiner Funktion. Wenn Du den ersten so abänderst:</p>
<pre><code class="language-cpp">char myCharArray[100] = {};
</code></pre>
<p>ist garantiert, dass alle Elemente des char-Arrays mit 0 initialisiert werden bevor die Funktion aufgerufen wird.</p>
<p>CharArrayUser schrieb:</p>
<blockquote>
<p>Muss ich das im zweiten Fall immer selbst anfügen, oder mache ich hier grundsätzlich was falsch.</p>
</blockquote>
<p>Ich tippe auf letzteres.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030716</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 07 Mar 2011 10:57:00 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied char myCharArray[100] und char* pMyArray = new char[100] on Mon, 07 Mar 2011 11:01:41 GMT]]></title><description><![CDATA[<p>Ich empfehle die Benutzung von std::vector, damit erschlägst du sowohl die Initialisierung mit 0 als auch das fehlende <em>delete[]</em> in deinem Code.</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

int main()
{
   std::vector&lt;char&gt; Buffer( GetNumCharsToReceive() +1 );
   SomeFunction( &amp;Buffer[0] );
}
</code></pre>
<p>Es sei denn, du möchtest explizit C und kein C++ programmieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030717</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 07 Mar 2011 11:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied char myCharArray[100] und char* pMyArray = new char[100] on Mon, 07 Mar 2011 11:20:49 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Ich empfehle die Benutzung von std::vector, damit erschlägst du sowohl die Initialisierung mit 0 als auch das fehlende <em>delete[]</em> in deinem Code.</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

int main()
{
   std::vector&lt;char&gt; Buffer( GetNumCharsToReceive() +1 );
   SomeFunction( &amp;Buffer[0] );
}
</code></pre>
<p>Es sei denn, du möchtest explizit C und kein C++ programmieren.</p>
</blockquote>
<p>aber wenn er dann schon auf die stl zurückgreift kann er auch gleich std::string nehmen...</p>
<p>this-&gt;CEdit::removeSpellingMistakes(this-&gt;m_content);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030723</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 07 Mar 2011 11:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschied char myCharArray[100] und char* pMyArray = new char[100] on Mon, 07 Mar 2011 11:28:37 GMT]]></title><description><![CDATA[<p>Ich Empfehle das Weglassen des ekelhaften C Präfixes und der m_ Präfixe für besser lesbaren Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2030726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2030726</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 07 Mar 2011 11:28:37 GMT</pubDate></item></channel></rss>