<?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[eines Zeiger-Programm]]></title><description><![CDATA[<p>Hi,<br />
ich möchte ein einfaches Zeigerprogramm programmieren, doch leider erhalte ich eine Fehlermeldung:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main(int argc, char** argv)
{
    int *pointer;

    if(*pointer = new int != NULL)
    {
        *pointer = 38;
        cout &lt;&lt; &quot;Der Pointer zeigt auf den Wert &quot;&lt;&lt; *pointer &lt;&lt; endl;
        delete pointer;
        pointer = 0;
    }
    else
    {
        cout&lt;&lt; &quot;Nicht genuegend Speicher verfuegbar!&quot; &lt;&lt; endl;
    }
    return 0;
}
</code></pre>
<p>Beim Compilieren ist kein Fehler. Aber beim Ausführen stürtzt das Programm immer ab. Vermutlich liegt der Fehler in Zeile x, aber was ist falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295775/eines-zeiger-programm</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 07:29:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295775.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Nov 2011 16:16:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:16:16 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich möchte ein einfaches Zeigerprogramm programmieren, doch leider erhalte ich eine Fehlermeldung:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main(int argc, char** argv)
{
    int *pointer;

    if(*pointer = new int != NULL)
    {
        *pointer = 38;
        cout &lt;&lt; &quot;Der Pointer zeigt auf den Wert &quot;&lt;&lt; *pointer &lt;&lt; endl;
        delete pointer;
        pointer = 0;
    }
    else
    {
        cout&lt;&lt; &quot;Nicht genuegend Speicher verfuegbar!&quot; &lt;&lt; endl;
    }
    return 0;
}
</code></pre>
<p>Beim Compilieren ist kein Fehler. Aber beim Ausführen stürtzt das Programm immer ab. Vermutlich liegt der Fehler in Zeile x, aber was ist falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147011</guid><dc:creator><![CDATA[krueemel]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:16:16 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:21:41 GMT]]></title><description><![CDATA[<p>krueemel schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(*pointer = new int != NULL)
</code></pre>
</blockquote>
<p>sollte eigentlich heißen:</p>
<pre><code class="language-cpp">if((pointer = new int) != NULL)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2147013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147013</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:21:41 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:27:20 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>krueemel schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(*pointer = new int != NULL)
</code></pre>
</blockquote>
<p>sollte eigentlich heißen:</p>
<pre><code class="language-cpp">if(*(pointer = new int) != NULL)
</code></pre>
</blockquote>
<p>sollte eigentlich heißen:</p>
<pre><code class="language-cpp">if ((pointer = new(nothrow) int))
</code></pre>
<p>Und Zeile 16 ist sinnlos.</p>
<p>Edit: Hach ja.. mit nothrow kann man doch gleich wieder wie in C Programmieren. *g*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147014</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:27:20 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:22:05 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>krueemel schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(*pointer = new int != NULL)
</code></pre>
</blockquote>
<p>sollte eigentlich heißen:</p>
<pre><code class="language-cpp">if(*(pointer = new int) != NULL)
</code></pre>
</blockquote>
<p>Müsste das nicht</p>
<pre><code class="language-cpp">if(pointer = new int != NULL)
</code></pre>
<p>heißen?</p>
<p>Edit: zu spääääääät (eine verdammte sekunde!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147015</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:23:30 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>krueemel schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(*pointer = new int != NULL)
</code></pre>
</blockquote>
<p>sollte eigentlich heißen:</p>
<pre><code class="language-cpp">if(*(pointer = new int) != NULL)
</code></pre>
</blockquote>
<p>Jetzt ist es zwar grammatikalisch richtig, aber dennoch falsch. new gibt kein NULL zurück, wenn es fehlschlägt, sondern wirft eine std::bad_alloc.</p>
<p>edit: Das bezieht sich nicht nur auf 314159265358979s Antwort, sondern auch auf die anderen beiden gleichen Inhalts, die in der Zwischenzeit erschienen sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147017</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:23:30 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:22:57 GMT]]></title><description><![CDATA[<p>krueemel schrieb:</p>
<blockquote>
<p>Beim Compilieren ist kein Fehler.</p>
</blockquote>
<p>Bei mir kommt aber eine Warnung und bei dir sicherlich auch (ansonsten dreh mal dein Warnlevel hoch). Warnungen sollte man nicht ignorieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147018</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:22:57 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:33:21 GMT]]></title><description><![CDATA[<p>ich habe es jetzt wie folgt geändert:</p>
<pre><code class="language-cpp">int *pointer = = new int;

    if(*pointer != NULL)
</code></pre>
<p>So läuft es auf jeden Fall. Macht jetzt die if-Abfrage auch Sinn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147022</guid><dc:creator><![CDATA[krueemel]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:33:21 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:43:03 GMT]]></title><description><![CDATA[<p>Das ist sehr falsch,<br />
mach das zweite Gleichheitszeichen weg, alter.<br />
Und ich glaube, du verstehst nicht den Unterschied zwischen</p>
<p>pointer != NULL</p>
<p>und</p>
<p>*pointer != NULL</p>
<p>mit dem dereferenzierungs-operator ('*') greift man auf den Inhalt eines Zeigers, also auf seinen pointee zurück; wenn du überprüfen willst, ob der Zeiger auf einen gültigen Speicherbereich zeigt muss dieser Operator weg.</p>
<p>also</p>
<pre><code class="language-cpp">if(!pointer)
{
    //Der Zeiger ist ungültig
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2147024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147024</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:38:15 GMT]]></title><description><![CDATA[<p>Und mach das <code>if</code> weg. Wie SeppJ schon erwähnt hat, kann <code>pointer</code> nicht 0 sein, sondern es wird eine Exception geworfen, wenn kein Speicher vorhanden ist. Wenn du schon dabei bist, mach auch noch das <code>new int</code> weg und schreib einfach</p>
<pre><code class="language-cpp">int foo = 0;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2147027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147027</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:38:15 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:40:01 GMT]]></title><description><![CDATA[<p>und wie kann ich abfragen, ob genügend Speicher vorhanden ist?</p>
<p>in C geht das doch auch:</p>
<pre><code class="language-cpp">if((pointer = malloc(sizeof(int))) != NULL)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2147031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147031</guid><dc:creator><![CDATA[krueemel]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:40:01 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:42:33 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>Und mach das <code>if</code> weg. Wie SeppJ schon erwähnt hat, kann <code>pointer</code> nicht 0 sein, sondern es wird eine Exception geworfen, wenn kein Speicher vorhanden ist.</p>
</blockquote>
<p>Gabs da nicht so ein schönes set_new_handler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147032</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:44:10 GMT]]></title><description><![CDATA[<p>krueemel schrieb:</p>
<blockquote>
<p>und wie kann ich abfragen, ob genügend Speicher vorhanden ist?</p>
</blockquote>
<p>Entweder du machst es mit nothrow, oder du verlässt dich darauf, dass genug Speicher vorhanden ist (weil Fehlerbehandlung eh keinen Sinn machen würde), oder du fängt std::bad_alloc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147033</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:44:10 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:44:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">new (std::nothrow) T;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2147035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147035</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:46:52 GMT]]></title><description><![CDATA[<p>Und warum den eingebauten Exceptionmechanismus durch eine umständlichere Rückfallvariante ersetzen? Nutz die Exceptions!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147036</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:46:52 GMT</pubDate></item><item><title><![CDATA[Reply to eines Zeiger-Programm on Mon, 21 Nov 2011 16:54:22 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>Gabs da nicht so ein schönes set_new_handler?</p>
</blockquote>
<p>Ja, Meyers schreibt auch viel dazu (weiß der Geier warum). Gebraucht hab ichs noch nie, weil ich auf normalen Computern den Sinn nicht sehe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147039</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Mon, 21 Nov 2011 16:54:22 GMT</pubDate></item></channel></rss>