<?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 Speicherzuweisung???]]></title><description><![CDATA[<p>Mir ist in meinem Buch gerade aufgefallen das dort überhaupt nicht steht welchen Sinn eine dynamische Speicherzuweisung macht. Wäre Dankbar für beispiele und möglichst in reinem C.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128451/dynamische-speicherzuweisung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 17:17:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128451.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 Dec 2005 19:42:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sat, 03 Dec 2005 19:43:02 GMT]]></title><description><![CDATA[<p>Mir ist in meinem Buch gerade aufgefallen das dort überhaupt nicht steht welchen Sinn eine dynamische Speicherzuweisung macht. Wäre Dankbar für beispiele und möglichst in reinem C.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933375</guid><dc:creator><![CDATA[Living Dead]]></dc:creator><pubDate>Sat, 03 Dec 2005 19:43:02 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sat, 03 Dec 2005 19:48:14 GMT]]></title><description><![CDATA[<p>Living Dead schrieb:</p>
<blockquote>
<p>Wäre Dankbar für beispiele und möglichst in reinem C.</p>
</blockquote>
<p>Ich glaube du hast dich im Forum geirrt. Frag mal die Leute im C-Forum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933380</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Sat, 03 Dec 2005 19:48:14 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sat, 03 Dec 2005 21:09:59 GMT]]></title><description><![CDATA[<p>Ich habe den Sinn auch noch nicht ganz raus, aber ich denke, es macht erst bei größeren Objekten, sprich klassen sinn.</p>
<p>Stell dir vor du erstellst ein Bildverarbeitungsprogramm wie Photoshop, wo man mehrere Bilder aufeinmal laden kann. Du könntest jetzt auf verdacht ein Array vom Typ Bild erstellen (z.B. Bild[100]). Bei einer Auflösung 1280x1024 hast du bei einem Bild glaube schon 3MB die im Arbeitsspeicher belegt werden. Wenn du jetzt ein festes Array hast, werden also bei einem Array von 10 Objekten über 300MB (!) arbeitsspeicher verbraten, ohne das sie verwendet werden. Mit der Dynamischen Speicherverwaltung kannst du das ganze eben Speicherfreundlicher machen (Also nach und nach 3MB bei bedarf belegen). Außerdem kannst du den Speicher wieder freigeben, was bei festen nicht-dynamischen variablen auch ned geht, außer du verlässt die Funktion, wo sie definiert wurden.</p>
<p>Bei &quot;Normalen&quot; datentypen wie int oder char macht es natürlich keinen sinn, sie extra dynamisch zu reservieren, außer in ganz seltenen ausnahme fällen, würde ich mal sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933482</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Sat, 03 Dec 2005 21:09:59 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sat, 03 Dec 2005 21:55:14 GMT]]></title><description><![CDATA[<p>Der Sinn besteht darin, dass wenn du z.B. ein Array erstellen willst, aber nicht weiß wie groß es sein soll, naja bzw. wenn die Größe erst im Laufe des Programms durch z.B. eine User-Eingabe bestimmt werden soll.<br />
Beispiel:</p>
<pre><code class="language-cpp">nicht:
int array[6] // du hast genau 6 Elemente

sondern:
int eingabe;
cin &gt;&gt; eingabe;
int array[eingabe];
</code></pre>
<p>Dadurch wird das Array auf dem Heap angelegt.</p>
<p>2. Sinn<br />
Wenn du eine Variable in einer Schleife deklarierst, dann ist diese Variable nach dem Verlassen der Schleife nicht mehr sichtbar, da sie in der Schleife lokal ist. Erstellst du sie aber auf dem Heap, also mit &quot;new&quot;, dann ist sie auch weiterhin sichtbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933522</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sat, 03 Dec 2005 21:55:14 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sat, 03 Dec 2005 22:23:37 GMT]]></title><description><![CDATA[<p>milo51 schrieb:</p>
<blockquote>
<p>2. Sinn<br />
Wenn du eine Variable in einer Schleife deklarierst, dann ist diese Variable nach dem Verlassen der Schleife nicht mehr sichtbar, da sie in der Schleife lokal ist. Erstellst du sie aber auf dem Heap, also mit &quot;new&quot;, dann ist sie auch weiterhin sichtbar.</p>
</blockquote>
<p>Das ist nicht ganz richtig. Die pointervariable ist dann auch nicht mehr sichtbar, das objekt ist aber noch da -&gt; memory leak.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933549</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sat, 03 Dec 2005 22:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sat, 03 Dec 2005 22:32:50 GMT]]></title><description><![CDATA[<p>Stimmt...aber irgendwo gab s doch noch eine Sache, womit man die lokalen Variablen umgehen konnt, mit Hilfe von new...was war das noch?^^<br />
Oder irre ich mich da? Ich weiß, dass es noch einen Sinn von dynamischer Speicherzuweisung gab <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/933560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933560</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sat, 03 Dec 2005 22:32:50 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sun, 04 Dec 2005 21:28:21 GMT]]></title><description><![CDATA[<p>Du könntest vor der Schleife einen Pointer erstellen, der die Adresse der variable bekommt, die in der Schleife erstellt worden ist. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>beispiel:</p>
<pre><code class="language-cpp">#define MAX_USERS 32 //Zum Beispiel
CUserData *Zahl; //Pointer auf CUserData

for(int i=0;i&lt;MAX_USERS;i++)
{
    Zahl = new CUserData[MAX_USERS];

     ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/934489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934489</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Sun, 04 Dec 2005 21:28:21 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sun, 04 Dec 2005 21:30:40 GMT]]></title><description><![CDATA[<p>So wars <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/934496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934496</guid><dc:creator><![CDATA[milo51]]></dc:creator><pubDate>Sun, 04 Dec 2005 21:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sun, 04 Dec 2005 21:37:47 GMT]]></title><description><![CDATA[<p>ich benutze malloc und free. Habe aber gehört das new und delete besser sein sollen und fast das gleiche machen. wie funktionieren new und delete und an was muss ich mich umgewöhenen?</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934503</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sun, 04 Dec 2005 21:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sun, 04 Dec 2005 21:39:11 GMT]]></title><description><![CDATA[<p>Eigentlich hab ich da Bullshit gemacht. ^^<br />
Würde die schleife wirklich 32 mal durchlaufen, würde 31mal ein CUserData objekt erstellt werden. 30 davon liegen unzugreifbar im Speicher rum, während nur die 31. wieder freigebbar ist.</p>
<p>Keine Ahnung, aber irgendwie so ging das wohl. ^^ Muss man wohl mit nem if oder so machen:</p>
<pre><code class="language-cpp">#define MAX_USERS 32 //Zum Beispiel
CUserData *Zahl; //Pointer auf CUserData

for(int i=0;i&lt;MAX_USERS;i++)
{
if(i=MAX_USERS)
    Zahl = new CUserData[MAX_USERS];
else
     ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/934507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934507</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Sun, 04 Dec 2005 21:39:11 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sun, 04 Dec 2005 21:40:41 GMT]]></title><description><![CDATA[<p>Ich glaube malloc und free benutzt man bei arrays? Aber ehrlich gesagt kenn ich den Unterschied auch nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Ist bestimmt sowas wie class und struct, vom Prinzip das Selbe nur kleine aber feine Unterschiede.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934508</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Sun, 04 Dec 2005 21:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sun, 04 Dec 2005 21:46:43 GMT]]></title><description><![CDATA[<p>Perner schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#define MAX_USERS 32 //Zum Beispiel
CUserData *Zahl; //Pointer auf CUserData

for(int i=0;i&lt;MAX_USERS;i++)
{
    Zahl = new CUserData[MAX_USERS];

     ...
}
</code></pre>
</blockquote>
<p>Auch nicht gerade ein gutes Beispiel. Du hast nach der Schleife zwar noch einen gültigen pointer auf ein array von CUserData. Trotzdem sind dir ein paar abhanden gekommen ( wenn MAX_USERS &gt; 1 ). Wenn du das array aber innerhalb der Schleife wieder freigibst machts wiederun keinen Sinn Zahl schon ausserhalb der Schleife zu deklarieren, da Zahl nach der Schleife nicht mehr gültig ist. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Kurt<br />
EDIT: Zu Spät bist schon selber draufgekommen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934510</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 04 Dec 2005 21:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Sun, 04 Dec 2005 22:00:38 GMT]]></title><description><![CDATA[<p>Nabend,</p>
<p>Perner schrieb:</p>
<blockquote>
<p>Ich glaube malloc und free benutzt man bei arrays? Aber ehrlich gesagt kenn ich den Unterschied auch nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Ist bestimmt sowas wie class und struct, vom Prinzip das Selbe nur kleine aber feine Unterschiede.</p>
</blockquote>
<p>in C++ nutzt man 'new' und 'delete' bzw. fuer Arrays 'new type[limit]' und<br />
'delete[]'. Der Unterschied ist, dass 'new' den CTor des Objektes aufruft und<br />
'delete' den DTor. Das geschiet bei 'malloc' und 'free' nicht.</p>
<p>Man sollte auch darauf achten, 'malloc', 'new', 'free' und 'delete' nicht zu<br />
mischen. Entweder benutzt man das eine oder das andere. Und wenn man mit Objekten<br />
arbeitet, kommt man um 'new' etc. nicht herum, den Grund dafuer habe ich<br />
bereits geschrieben.</p>
<p>mfg<br />
v R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934519</guid><dc:creator><![CDATA[virtuell Realisticer]]></dc:creator><pubDate>Sun, 04 Dec 2005 22:00:38 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Mon, 05 Dec 2005 14:28:40 GMT]]></title><description><![CDATA[<p>virtuell Realisticer schrieb:</p>
<blockquote>
<p>Man sollte auch darauf achten, 'malloc', 'new', 'free' und 'delete' nicht zu<br />
mischen.</p>
</blockquote>
<p>Wieso? Man kann ja new und delete für klassen nehmen und malloc und free für arrays. Oder nicht?</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934950</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Mon, 05 Dec 2005 14:28:40 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Mon, 05 Dec 2005 14:30:58 GMT]]></title><description><![CDATA[<p>&quot;Mischen&quot; meinte sinngemäß dass Du kein Objekt mit new anlegen und mit free() freigeben sollst (oder vice versa)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934954</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 05 Dec 2005 14:30:58 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Mon, 05 Dec 2005 14:34:30 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>&quot;Mischen&quot; meinte sinngemäß dass Du kein Objekt mit new anlegen und mit free() freigeben sollst (oder vice versa)</p>
</blockquote>
<p>Achso. Okay, alles klar.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934959</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Mon, 05 Dec 2005 14:34:30 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherzuweisung??? on Mon, 05 Dec 2005 14:34:39 GMT]]></title><description><![CDATA[<p>joomoo schrieb:</p>
<blockquote>
<p>virtuell Realisticer schrieb:</p>
<blockquote>
<p>Man sollte auch darauf achten, 'malloc', 'new', 'free' und 'delete' nicht zu<br />
mischen.</p>
</blockquote>
<p>Wieso? Man kann ja new und delete für klassen nehmen und malloc und free für arrays. Oder nicht?</p>
<p>mfg.</p>
</blockquote>
<p>Abgesehen davon, dass du meinst man solle new/delete für Klassen/Strukturen verwenden, und malloc/free für built-ins nehmen, kann man mit new[] auch dyn. Arrays anlegen und mit delete[] wieder freigeben.<br />
Aber warum sollte ich in C++ noch malloc nehmen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934960</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Mon, 05 Dec 2005 14:34:39 GMT</pubDate></item></channel></rss>