<?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[dynamische variable mit funktion erstellen und löschen - ungültiger zeiger]]></title><description><![CDATA[<p>Hi,</p>
<p>wenn ich folgendes Programm ausführe bekomme ich sowas wie: glibc detected invalid pointer free()...und dann noch so eine unübersichtliche memory map...</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

void erzeuge_int (int*);
void loesche (*int*);

int main (void)
{
  int zahl;
  int *zeiger;
  zeiger = &amp;zahl;

  // ...

  erzeuge_int (zeiger);
  *zeiger = 159;

  // ...

  loeschen (zeiger);
  return 0;
}

void erzeuge_int (int *ptr)
{
  ptr = new(nothrow) int;
}

void loeschen (int *del)
{
  delete del;
}
</code></pre>
<p>Woran liegt das?</p>
<p>Ich hab das jetzt absichtlich nicht über einen möglichen rückgabewert von erzeuge_int gemacht, sondern wollte das mal so testen...soll das nicht funktionieren?</p>
<p>Achso, und wenn ich die variable weglasse und den zeiger direkt mit int *zeiger = 0; initialisiere, krieg ich als fehlermeldung &quot;segmentation fault&quot;...?!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/253177/dynamische-variable-mit-funktion-erstellen-und-löschen-ungültiger-zeiger</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 02:57:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/253177.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Oct 2009 16:01:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dynamische variable mit funktion erstellen und löschen - ungültiger zeiger on Thu, 29 Oct 2009 16:01:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wenn ich folgendes Programm ausführe bekomme ich sowas wie: glibc detected invalid pointer free()...und dann noch so eine unübersichtliche memory map...</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

void erzeuge_int (int*);
void loesche (*int*);

int main (void)
{
  int zahl;
  int *zeiger;
  zeiger = &amp;zahl;

  // ...

  erzeuge_int (zeiger);
  *zeiger = 159;

  // ...

  loeschen (zeiger);
  return 0;
}

void erzeuge_int (int *ptr)
{
  ptr = new(nothrow) int;
}

void loeschen (int *del)
{
  delete del;
}
</code></pre>
<p>Woran liegt das?</p>
<p>Ich hab das jetzt absichtlich nicht über einen möglichen rückgabewert von erzeuge_int gemacht, sondern wollte das mal so testen...soll das nicht funktionieren?</p>
<p>Achso, und wenn ich die variable weglasse und den zeiger direkt mit int *zeiger = 0; initialisiere, krieg ich als fehlermeldung &quot;segmentation fault&quot;...?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1800310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1800310</guid><dc:creator><![CDATA[kARRE]]></dc:creator><pubDate>Thu, 29 Oct 2009 16:01:30 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische variable mit funktion erstellen und löschen - ungültiger zeiger on Thu, 29 Oct 2009 16:39:06 GMT]]></title><description><![CDATA[<p>Bei delete zeigt 'zeiger' noch immer auf 'zahl', weil 'erzeuge_int' diesen nicht ändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1800325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1800325</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Thu, 29 Oct 2009 16:39:06 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische variable mit funktion erstellen und löschen - ungültiger zeiger on Thu, 29 Oct 2009 16:56:27 GMT]]></title><description><![CDATA[<p>und wie muss man das hier ändern, damit zeiger die adresse von ptr übernimmt. ist das überhaupt möglich, oder muss ich das via return machen?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1800333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1800333</guid><dc:creator><![CDATA[kARRE]]></dc:creator><pubDate>Thu, 29 Oct 2009 16:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische variable mit funktion erstellen und löschen - ungültiger zeiger on Thu, 29 Oct 2009 17:20:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void erzeuge_int (int **ptr)
{
  *ptr = new(nothrow) int;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1800345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1800345</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Thu, 29 Oct 2009 17:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische variable mit funktion erstellen und löschen - ungültiger zeiger on Thu, 29 Oct 2009 18:05:09 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void erzeuge_int (int **ptr)
{
  *ptr = new(nothrow) int;
}
</code></pre>
</blockquote>
<p>dann ändert sich der aufruf aber auch<br />
außerdem könnte man hier auch ne ref auf nen ptr nehmen... dann kommt gar niemand auch niemand auf die idee, 0 zu übergeben...<br />
für nothrow muss man btw den header new includieren</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1800362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1800362</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 29 Oct 2009 18:05:09 GMT</pubDate></item></channel></rss>