<?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[delete ptr]]></title><description><![CDATA[<p>Hi,</p>
<p>mein Programm gibt zwar den gewünschten Output, stürzt dann aber ab:</p>
<pre><code>#include&lt;iostream&gt;
#include&lt;cstdlib&gt;
#include&lt;string&gt;
using namespace std;

int main(){
	int *ptr=NULL;
	int antwort=0;
	cout &lt;&lt; &quot;Reservieren? (1) ja, (2) nein: &quot;;
	cin &gt;&gt; antwort;
	if(antwort == 1){
		ptr = new int[20];
	}
	for(int i=0; i&lt;20; i++){
		*(++ptr)=i;
		cout &lt;&lt; *ptr &lt;&lt; &quot; &quot; &lt;&lt; ptr &lt;&lt; endl;
	}
	//ptr = NULL;
	delete ptr;
	return 0;
}
</code></pre>
<p>Wenn ich den Pointer ptr wieder auf NULL setze, bevor ich den Speicher wieder freigebe, dann funktionierts.</p>
<p>Dann hab ich noch eine allg. Frage zu ptr = new int[20]:<br />
Ich verstehe das so: es wird Speicher reserviert, der für einen Array mit 20 int-Werten ausreicht. Aber wie kann ich dann auf den Speicher zugreifen? Mein Array hat ja noch keinen Namen wie<br />
int a[20];<br />
a[5]=5;<br />
Drücke ich mein Problem verständlich aus?</p>
<p>Danke für die Hilfe,<br />
nbt <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/topic/331538/delete-ptr</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 19:17:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331538.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Mar 2015 21:53:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to delete ptr on Thu, 05 Mar 2015 21:53:52 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mein Programm gibt zwar den gewünschten Output, stürzt dann aber ab:</p>
<pre><code>#include&lt;iostream&gt;
#include&lt;cstdlib&gt;
#include&lt;string&gt;
using namespace std;

int main(){
	int *ptr=NULL;
	int antwort=0;
	cout &lt;&lt; &quot;Reservieren? (1) ja, (2) nein: &quot;;
	cin &gt;&gt; antwort;
	if(antwort == 1){
		ptr = new int[20];
	}
	for(int i=0; i&lt;20; i++){
		*(++ptr)=i;
		cout &lt;&lt; *ptr &lt;&lt; &quot; &quot; &lt;&lt; ptr &lt;&lt; endl;
	}
	//ptr = NULL;
	delete ptr;
	return 0;
}
</code></pre>
<p>Wenn ich den Pointer ptr wieder auf NULL setze, bevor ich den Speicher wieder freigebe, dann funktionierts.</p>
<p>Dann hab ich noch eine allg. Frage zu ptr = new int[20]:<br />
Ich verstehe das so: es wird Speicher reserviert, der für einen Array mit 20 int-Werten ausreicht. Aber wie kann ich dann auf den Speicher zugreifen? Mein Array hat ja noch keinen Namen wie<br />
int a[20];<br />
a[5]=5;<br />
Drücke ich mein Problem verständlich aus?</p>
<p>Danke für die Hilfe,<br />
nbt <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/2445542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445542</guid><dc:creator><![CDATA[nbt]]></dc:creator><pubDate>Thu, 05 Mar 2015 21:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to delete ptr on Thu, 05 Mar 2015 22:03:25 GMT]]></title><description><![CDATA[<p>nbt schrieb:</p>
<blockquote>
<p>Wenn ich den Pointer ptr wieder auf NULL setze, bevor ich den Speicher wieder freigebe, dann funktionierts.</p>
</blockquote>
<p>Ne, dann beendets zwar ohne crash aber du hast nichts gelöscht.</p>
<p>Du erhöhst den pointer in der Schleife. Du kannst nicht einfach irgendeine andere Adresse löschen als du vom new bekommen hast, und erwarten dass C++ weiß wo der mal herkam. Du musst dir die Originaladresse (Den Originalen Pointer) zwischenspeichern bzw. einen temporären erstellen um diesen in der Schleife zu erhöhen.</p>
<p>Edit: Prefixincrement ist ohnehin falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445543</guid><dc:creator><![CDATA[tkausl]]></dc:creator><pubDate>Thu, 05 Mar 2015 22:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to delete ptr on Thu, 05 Mar 2015 22:01:08 GMT]]></title><description><![CDATA[<p><code>*(++ptr)=i;</code> -&gt; <code>*(ptr + i) = i;</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445544</guid><dc:creator><![CDATA[++ptr]]></dc:creator><pubDate>Thu, 05 Mar 2015 22:01:08 GMT</pubDate></item><item><title><![CDATA[Reply to delete ptr on Thu, 05 Mar 2015 22:08:09 GMT]]></title><description><![CDATA[<p>Oder eben ptr[i] = i;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445546</guid><dc:creator><![CDATA[patrick246]]></dc:creator><pubDate>Thu, 05 Mar 2015 22:08:09 GMT</pubDate></item><item><title><![CDATA[Reply to delete ptr on Fri, 06 Mar 2015 07:07:20 GMT]]></title><description><![CDATA[<p>Davon mal abgesehen: Warum machst du überhaupt manuelle Speicherverwaltung? Das ist unnötig kompliziert und fehleranfällig. Nimm einen std::vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445584</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Fri, 06 Mar 2015 07:07:20 GMT</pubDate></item><item><title><![CDATA[Reply to delete ptr on Fri, 06 Mar 2015 09:39:57 GMT]]></title><description><![CDATA[<p>Und mach <code>delete[] ptr</code> . Die eigentliche Ursache des Absturzes wurde ja schon geklärt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445608</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 06 Mar 2015 09:39:57 GMT</pubDate></item></channel></rss>