<?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[Frage zu &amp;quot;delete&amp;quot;]]></title><description><![CDATA[<p>Hey,<br />
kann mir bitte jemand erklären, warum ich das mit new erzeugte char-Array nicht mit delete außerhalb der Funktion entfernen kann? <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>
<pre><code>#include &lt;iostream&gt;

char *strdublikat (const char*);

int main (void) {
	const char* TEXT = &quot;Das ist ein Text&quot;;
	char* dubl = NULL;
	dubl = strdublikat ( TEXT );

	int i = {0};
	while (*dubl) {
		std::cout &lt;&lt; dubl[i];
		dubl++;
	}
        // delete [] ptr funktioniert nicht!
	std::cin.get();
	return 0;
}

char *strdublikat (const char* s) {
	char *ptr = new char[40];
	char *ptr1 = ptr;
	while (*ptr1++ = *s++);
	return ptr;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/322104/frage-zu-quot-delete-quot</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 10:09:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322104.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Dec 2013 17:18:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu &amp;quot;delete&amp;quot; on Fri, 06 Dec 2013 17:18:19 GMT]]></title><description><![CDATA[<p>Hey,<br />
kann mir bitte jemand erklären, warum ich das mit new erzeugte char-Array nicht mit delete außerhalb der Funktion entfernen kann? <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>
<pre><code>#include &lt;iostream&gt;

char *strdublikat (const char*);

int main (void) {
	const char* TEXT = &quot;Das ist ein Text&quot;;
	char* dubl = NULL;
	dubl = strdublikat ( TEXT );

	int i = {0};
	while (*dubl) {
		std::cout &lt;&lt; dubl[i];
		dubl++;
	}
        // delete [] ptr funktioniert nicht!
	std::cin.get();
	return 0;
}

char *strdublikat (const char* s) {
	char *ptr = new char[40];
	char *ptr1 = ptr;
	while (*ptr1++ = *s++);
	return ptr;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2370254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370254</guid><dc:creator><![CDATA[Jeeanny]]></dc:creator><pubDate>Fri, 06 Dec 2013 17:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;delete&amp;quot; on Fri, 06 Dec 2013 17:22:18 GMT]]></title><description><![CDATA[<p>in der while im main veränderst du &quot;dubl&quot;, dann zeigt es beim löschen nciht mehr auf den anfang des tatsächlichen arrays.</p>
<p>dein rumgebastel da mit strings, pointern und new/delete ist ziemlich instabil und unnötig, schau dir die stl an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370255</guid><dc:creator><![CDATA[asfsd]]></dc:creator><pubDate>Fri, 06 Dec 2013 17:22:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;delete&amp;quot; on Fri, 06 Dec 2013 17:29:17 GMT]]></title><description><![CDATA[<p>Ich habe mich mit der STL noch nicht beschäftigt, weil ich erst die Sprachelemente an sich lernen will. Dankeschön für die Antwort <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/2370257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370257</guid><dc:creator><![CDATA[Jeeanny]]></dc:creator><pubDate>Fri, 06 Dec 2013 17:29:17 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu &amp;quot;delete&amp;quot; on Fri, 06 Dec 2013 19:34:04 GMT]]></title><description><![CDATA[<p>das ist wirklich schwierig zu lesen!</p>
<p>Gewöhn dir an, wenn du mit Zeigern arbeitest, das so einfach wie möglich zu halten, sonst bekommst du schnell ziemlich große Probleme.</p>
<p>Abgesehen davon ist dir in deinem Programm ein Fehler unterlaufen, der von Hackern ausgenutzt werden kann sofern der String von außen ans Programm übergeben wird. Stichwort Buffer overflow.</p>
<p>Starte mal den Debugger und schau, was passiert, wenn du die Funktion mit verschiedenen Strings aufrufst. Mach den String einmal sehr lang, dann wirst du einen Speicherzugriffsfehler bekommen und das Programm stürzt ab.</p>
<pre><code>char *strdublikat (const char* s) {
    char *ptr = new char[40];
    char *ptr1 = ptr;
    while (*ptr1++ = *s++);
    return ptr;
}
</code></pre>
<p>Bei der Zeile int i = {0}; hast du wohl eher gemeint int i = 0;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2370282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2370282</guid><dc:creator><![CDATA[dfdsfsf]]></dc:creator><pubDate>Fri, 06 Dec 2013 19:34:04 GMT</pubDate></item></channel></rss>