<?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[Globale Zeiger und Speicherreservierung mit New]]></title><description><![CDATA[<p>Ich lerne Grade C++ und bin jetzt bei Verkettete Liste angekommen.<br />
In dem Beispiel aus meinem Buch wird eine Globale Zeiger benutzt.</p>
<pre><code class="language-cpp">// Globale Vars
struct Knoten* Anker = 0;
</code></pre>
<p>es heißt doch das man Globale Variablen vermeiden soll, oder gibt es ausnahmen?</p>
<p>Ok das Zweite ist das mit New für jedes Listenelement Speicher reserviert wird.<br />
Der mit delete wieder frei gegeben werden muss um Speicherlecks zu vermeiden, habe ich das richtig verstanden?</p>
<pre><code class="language-cpp">Knoten* node = new Knoten;
</code></pre>
<p>Egal welches Beispiel ich mir angeschaut habe, in keinem wird der mit new belegte Speicher frei gegeben.</p>
<p>Nur damit ich es richtig lerne, kann mir das einer erklären?</p>
<p>Gruß Steffix</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288027/globale-zeiger-und-speicherreservierung-mit-new</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 04:02:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288027.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 09 Jun 2011 07:44:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 07:44:29 GMT]]></title><description><![CDATA[<p>Ich lerne Grade C++ und bin jetzt bei Verkettete Liste angekommen.<br />
In dem Beispiel aus meinem Buch wird eine Globale Zeiger benutzt.</p>
<pre><code class="language-cpp">// Globale Vars
struct Knoten* Anker = 0;
</code></pre>
<p>es heißt doch das man Globale Variablen vermeiden soll, oder gibt es ausnahmen?</p>
<p>Ok das Zweite ist das mit New für jedes Listenelement Speicher reserviert wird.<br />
Der mit delete wieder frei gegeben werden muss um Speicherlecks zu vermeiden, habe ich das richtig verstanden?</p>
<pre><code class="language-cpp">Knoten* node = new Knoten;
</code></pre>
<p>Egal welches Beispiel ich mir angeschaut habe, in keinem wird der mit new belegte Speicher frei gegeben.</p>
<p>Nur damit ich es richtig lerne, kann mir das einer erklären?</p>
<p>Gruß Steffix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075544</guid><dc:creator><![CDATA[Steffix]]></dc:creator><pubDate>Thu, 09 Jun 2011 07:44:29 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 07:50:35 GMT]]></title><description><![CDATA[<p>Ja, Globale sollten normalerweise vermieden werden.</p>
<p>Und ja, Speicher, der mit new/new[] reserviert wurde, muss mit delete/delete[] wieder freigegeben werden. Wenn das in deinem Buch tatsächlich nie passiert, solltest du dir ein neues Buch kaufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075546</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Thu, 09 Jun 2011 07:50:35 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 08:22:20 GMT]]></title><description><![CDATA[<p>Was für ein Buch ist das denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075564</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 09 Jun 2011 08:22:20 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 08:27:04 GMT]]></title><description><![CDATA[<p>Zur Einführung in Zeiger könnte dir dieser Artikel helfen: <a href="http://magazin.c-plusplus.net/artikel/Pointer%20in%20C%28PlusPlus%29" rel="nofollow">Pointer in C(++)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075567</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 09 Jun 2011 08:27:04 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 08:27:47 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort. Du schreibst normalerweise, gibt es eine Ausnahme für Globale?</p>
<p>Ok wenn ich versuche die Globale zu vermeiden, dann kann ich den NullZeiger nicht an eine Func. übergeben.</p>
<pre><code class="language-cpp">// Struct 
struct Knoten {
    int daten;
    struct Knoten* next;
}

// Globale Vars
// struct Knoten* Anker = 0;

// Prototype
bool insert( Knoten* kn, int&amp; var );

int main() {

    struct Knoten* Anker = 0;
    int iwert = 5;

    // beispiel
    insert( Anker, iwert );
    cout &lt;&lt; &quot;Anker = &quot; &lt;&lt; Anker &lt;&lt; endl;
    // Anker ist nach Func. Aufruf immer noch 0

    return 0;
}

bool insert( Knoten* kn, int&amp; refval ) {

    if(kn == 0 ) {
        Knoten* node = new Knoten;
        node-&gt;daten = refval;
        node-&gt;next  = 0;
        kn = node;
        // hier hat Kn eine Adresse oben in Main hat Anker immer noch 0
    } else {
        // hier weiter code
    }
    return 0;
}
</code></pre>
<p>Wo mache ich den Denkfehler, Anker wird in der Func. doch initialisiert oder?</p>
<p>Gruß Steffix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075568</guid><dc:creator><![CDATA[Steffix]]></dc:creator><pubDate>Thu, 09 Jun 2011 08:27:47 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 08:45:31 GMT]]></title><description><![CDATA[<p>kn ist eine Kopie von Anker.</p>
<p>Versuch's mal mit</p>
<pre><code class="language-cpp">bool insert( Knoten*&amp; kn, int&amp; var );
</code></pre>
<p>dann sind kn und Anker dasselbe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075573</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Thu, 09 Jun 2011 08:45:31 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 08:54:35 GMT]]></title><description><![CDATA[<p>Das sieht schon wieder verdächting nach JW C++ vAbZ aus.</p>
<p>Ich glaube, das Beispiel ist nur darauf ausgelegt, die Funktionsweise von verketteten Listen zu erkären, ohne Wert auf Sauberkeit zu legen. Normalerweise würde man sowas in einer Klasse kapseln und bräuchte keine globalen Variablen mehr (und könnte damit auch mehrere verkettete Listen gleichzeitig benutzen).</p>
<p>@TE:<br />
Da Anker der Startknoten für die Liste ist, musst du ihm beim Einfügen eines Knotens in eine leere Liste den ersten Knoten zuweisen:</p>
<pre><code class="language-cpp">bool insert( Knoten* kn, int&amp; refval ) 
{
    if( !kn ) 
    {
        // hier kann direkt mit kn gearbeitet werden, statt einen temporären Zeiger zu benutzen
        kn = new Knoten;
        kn-&gt;daten = refval;
        kn-&gt;next  = 0;
    } 
    else 
    {
        // hier weiter code
    }
    // wenn der Startknoten nicht besetzt ist muss ihm jetzt der erste Knoten zugewiesen werden
    if( !Anker ) Anker = kn;

    return /* 0 */ false; &lt;&lt; boolschen Wert benutzen (und warum false zurückgeben?)
}
</code></pre>
<p>Ist nur ein Tipp, da gibt´s noch so viel Verbesserungspotenzial. Bin zu faul, weiter zu schreiben, aber wahrscheinlich fehlen dem TE auch noch die nötigen Grundlagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075577</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 09 Jun 2011 08:54:35 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 09:47:49 GMT]]></title><description><![CDATA[<p>Also DocShoe hat es richtig erkannt das Buch ist von Jürgen Wolf und heißt C++ von A bis Z.</p>
<p>Ich habe mir schon gedacht das es nur ein abgespecktes Beispiel ist.<br />
Habe versucht das ganze mit einem Lokalen Zeiger auszustatten und bin dabei auf einige Probleme gestoßen, die ich mir nicht selber erklären konnte.</p>
<p>In dem Buch werden Verkettete List als Klassen gezeigt.<br />
Nur soweit bin ich noch nicht, mir geht es darum das gelernte auch zu verstehen.</p>
<p>Caligulaminus</p>
<pre><code class="language-cpp">bool insert( Knoten*&amp; kn, ... )
</code></pre>
<p>Die schreib weise kannte ich noch nicht. Ich bin davon ausgegangen das ich eine Zeiger übergebe. Der in Func. Initialisiert wird.</p>
<p>Dank für eurer Hilfe ich kann es jetzt besser nachvollziehen.</p>
<p>Gruß Steffix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075595</guid><dc:creator><![CDATA[Steffix]]></dc:creator><pubDate>Thu, 09 Jun 2011 09:47:49 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 10:11:10 GMT]]></title><description><![CDATA[<p>Wirf das Buch weg, benutz es, um das Bett abzustützen oder Zettel zu beschweren, aber guck nicht rein!<br />
JW lehrt einen verkorksten Mischmasch aus C und C++, daraus etwas lernen zu wollen man man wirklich nicht empfehlen. Der Autor hat es sogar bis zu einem eigenen Thread in diesem Forum gebracht.<br />
Guck dir stattdessen die Sektion &quot;Buchempfehlungen&quot; an, dort werden gute Bücher vorgestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075608</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 09 Jun 2011 10:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 10:26:45 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>JW lehrt einen verkorksten Mischmasch aus C und C++</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Das zeigt sich schon dadurch, dass er &quot; <code>struct</code> &quot; vor einer Definition dessen Typ ein <code>struct</code> ist schreibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075613</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 09 Jun 2011 10:26:45 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Thu, 09 Jun 2011 10:25:57 GMT]]></title><description><![CDATA[<p>Steffix schrieb:</p>
<blockquote>
<p>Also DocShoe hat es richtig erkannt das Buch ist von Jürgen Wolf und heißt C++ von A bis Z.</p>
</blockquote>
<p>You got Rick Rol... Jürgen Wolfed!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2075617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2075617</guid><dc:creator><![CDATA[jwed]]></dc:creator><pubDate>Thu, 09 Jun 2011 10:25:57 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Fri, 10 Jun 2011 08:34:41 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Wirf das Buch weg, ...</p>
</blockquote>
<p>Mit welchem Buch Arbeitest du, oder kannst du mir ein Buch Empfehlen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076190</guid><dc:creator><![CDATA[Steffix]]></dc:creator><pubDate>Fri, 10 Jun 2011 08:34:41 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Fri, 10 Jun 2011 09:11:50 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>DocShoe schrieb:</p>
<blockquote>
<p>JW lehrt einen verkorksten Mischmasch aus C und C++</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Das zeigt sich schon dadurch, dass er &quot; <code>struct</code> &quot; vor einer Definition dessen Typ ein <code>struct</code> ist schreibt.</p>
</blockquote>
<p>Falls ich deine Aussage einigermassen richtig verstanden habe:<br />
Es ist zwar in dem Fall überflüssig aber völlig legitim das struct dazuzuschreiben, und hat nichts mit C und C++ Mischmasch zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076205</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Fri, 10 Jun 2011 09:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Fri, 10 Jun 2011 09:25:46 GMT]]></title><description><![CDATA[<p>Steffix schrieb:</p>
<blockquote>
<p>DocShoe schrieb:</p>
<blockquote>
<p>Wirf das Buch weg, ...</p>
</blockquote>
<p>Mit welchem Buch Arbeitest du, oder kannst du mir ein Buch Empfehlen?</p>
</blockquote>
<p>C++ Primer, Der C++ Programmierer, Die C++ Programmiersprache oder Einführung in die Programmierung mit C++. Das sind so die Titeln die immer wieder hier im Forum empfohlen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076213</guid><dc:creator><![CDATA[Books]]></dc:creator><pubDate>Fri, 10 Jun 2011 09:25:46 GMT</pubDate></item><item><title><![CDATA[Reply to Globale Zeiger und Speicherreservierung mit New on Fri, 10 Jun 2011 09:33:38 GMT]]></title><description><![CDATA[<p>Thinking in C++ darf nicht vergessen werden (das gibt's auch kostenlos als pdf im Internet).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2076217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2076217</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 10 Jun 2011 09:33:38 GMT</pubDate></item></channel></rss>