<?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[Speicherloch, Ärger mit delete]]></title><description><![CDATA[<p>Hallo,<br />
wie stopfe ich das Speicherloch? delete vor return ist ja nicht so gut und danach ist es einfach zu spät. Und es soll dynamisch bleiben.</p>
<pre><code>char *BasePath(const char *sPath)
{
	int	i = strlen(sPath);
	char	*sCopy = new char[i + 1];

	memcpy(sCopy, sPath, i + 1);

	if(sPath[i - 1] != '\\')
	{
		for(; i &gt; 0; i--)
		{
			if(sPath[i - 1] == '\\')
			{
				sCopy[i] = 0;
				break;
			}
		}
	}

	return sCopy;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/139215/speicherloch-ärger-mit-delete</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 12:36:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/139215.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Mar 2006 15:25:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherloch, Ärger mit delete on Sat, 04 Mar 2006 15:25:13 GMT]]></title><description><![CDATA[<p>Hallo,<br />
wie stopfe ich das Speicherloch? delete vor return ist ja nicht so gut und danach ist es einfach zu spät. Und es soll dynamisch bleiben.</p>
<pre><code>char *BasePath(const char *sPath)
{
	int	i = strlen(sPath);
	char	*sCopy = new char[i + 1];

	memcpy(sCopy, sPath, i + 1);

	if(sPath[i - 1] != '\\')
	{
		for(; i &gt; 0; i--)
		{
			if(sPath[i - 1] == '\\')
			{
				sCopy[i] = 0;
				break;
			}
		}
	}

	return sCopy;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1008557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008557</guid><dc:creator><![CDATA[BasePath]]></dc:creator><pubDate>Sat, 04 Mar 2006 15:25:13 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch, Ärger mit delete on Sat, 04 Mar 2006 15:34:16 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>entweder du verwendest einen SmartPointer (z.B. die von der boost-lib), oder du denkst selber daran, den Speicherplatz nachdem du die Funktion verwendet hast, wieder freizugeben (kannst es auch in ne Funktion auslagern, egal):</p>
<pre><code class="language-cpp">char *p = BasePath(&quot;Whatever&quot;);
//mit p arbeiten
delete [] p;
</code></pre>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008560</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sat, 04 Mar 2006 15:34:16 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch, Ärger mit delete on Sat, 04 Mar 2006 15:29:53 GMT]]></title><description><![CDATA[<p>Das geht nicht. Entweder kopierst du es in ein Feld mit statischer Größe, die also immer gleich ist oder du gibst den Speicher nach dem Aufruf der Funktion frei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008562</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Sat, 04 Mar 2006 15:29:53 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch, Ärger mit delete on Sat, 04 Mar 2006 15:30:25 GMT]]></title><description><![CDATA[<p>Von welchem Speicherloch redest du? Der Aufrufer der Funktion muss daran denken den String mit einem delete[] wieder freizugeben, wenn du das vermeiden willst, dann verwende std::string oder std::wstring</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008563</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Sat, 04 Mar 2006 15:30:25 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch, Ärger mit delete on Sat, 04 Mar 2006 15:31:42 GMT]]></title><description><![CDATA[<p>GPC schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>entweder du verwendest einen SmartPointer (z.B. die von der boost-lib oder std::auto_ptr)[...]</p>
</blockquote>
<p>In auto_ptr darf man keine Arrays speichern. Aber boost bietet smart-ptr für arrays an <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/1008567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008567</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Sat, 04 Mar 2006 15:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch, Ärger mit delete on Sat, 04 Mar 2006 15:34:04 GMT]]></title><description><![CDATA[<p>Eh, stimmt. auto_ptr verwende ich nicht, deshalb der Irrtum <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/1008572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008572</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sat, 04 Mar 2006 15:34:04 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch, Ärger mit delete on Sat, 04 Mar 2006 15:44:16 GMT]]></title><description><![CDATA[<p>Naja, anstatt einfach std::string zu nehmen und dann kann man das auch als auto_ptr&lt;string&gt; zurück geben... aber man kann es sich ja auch schwer machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008582</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sat, 04 Mar 2006 15:44:16 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherloch, Ärger mit delete on Mon, 06 Mar 2006 08:12:35 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Naja, anstatt einfach std::string zu nehmen und dann kann man das auch als auto_ptr&lt;string&gt; zurück geben...</p>
</blockquote>
<p>Den String kann man sogar direkt als Wert übergeben, ohne irgendwelche Pointer-Spielereien.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009433</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Mar 2006 08:12:35 GMT</pubDate></item></channel></rss>