<?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 Speicherverwaltung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schreib an einem Programm, welches eine Datei ausliest. Gleiche Elemente in dieser Datei, soll das Programm in einem Array speichern, welches als Datentyp eine eigene Struktur besitzt. Da ich nicht weiß, wieviele solcher Elemente in der Datei vorhanden sein werden, bzw es verschiedene Dateien geben wird, die alle eine unterschiedliche Anzahl dieser Elemente haben, möchte ich ein dynamisches Array anlegen, welches um ein Element erweitert wird sobald wieder ein Element in der Datei auftritt. Nun habe ich einen Zeiger angelegt, der den Zugriff auf den Speicher realisieren soll.</p>
<pre><code class="language-cpp">driverparam *p_driverParam = (driverparam*) calloc(1,sizeof(driverparam));
</code></pre>
<p>Damit hoffe ich nun Speicherplatz für ein Element vom Typ &quot;driverparam&quot; zu reservieren.<br />
Nun meine Fragen:<br />
1. Wie ermittle ich die Größe des belegten Speicherplatzes?<br />
2. Wie ermittle ich die Anzahl der bereits angelegte Elemente, auf die ich mit dem Zeiger zugreifen kann?<br />
3. Wie erhöhe ich den reservierten Speicher um ein Element?</p>
<p>mfg chuqa</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152289/dynamische-speicherverwaltung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 21:48:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152289.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Jul 2006 07:15:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 07:15:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schreib an einem Programm, welches eine Datei ausliest. Gleiche Elemente in dieser Datei, soll das Programm in einem Array speichern, welches als Datentyp eine eigene Struktur besitzt. Da ich nicht weiß, wieviele solcher Elemente in der Datei vorhanden sein werden, bzw es verschiedene Dateien geben wird, die alle eine unterschiedliche Anzahl dieser Elemente haben, möchte ich ein dynamisches Array anlegen, welches um ein Element erweitert wird sobald wieder ein Element in der Datei auftritt. Nun habe ich einen Zeiger angelegt, der den Zugriff auf den Speicher realisieren soll.</p>
<pre><code class="language-cpp">driverparam *p_driverParam = (driverparam*) calloc(1,sizeof(driverparam));
</code></pre>
<p>Damit hoffe ich nun Speicherplatz für ein Element vom Typ &quot;driverparam&quot; zu reservieren.<br />
Nun meine Fragen:<br />
1. Wie ermittle ich die Größe des belegten Speicherplatzes?<br />
2. Wie ermittle ich die Anzahl der bereits angelegte Elemente, auf die ich mit dem Zeiger zugreifen kann?<br />
3. Wie erhöhe ich den reservierten Speicher um ein Element?</p>
<p>mfg chuqa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091540</guid><dc:creator><![CDATA[Chuqa]]></dc:creator><pubDate>Wed, 05 Jul 2006 07:15:21 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 07:36:24 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code>int size = 1;
driverparam *p_driverParam = (driverparam*) calloc(size, sizeof(driverparam));
p_driverParam = (driverparam *) realloc(p_driverParam, ((size + 1) * sizeof(p_driverparam)));
</code></pre>
<p>mfg<br />
asci</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091553</guid><dc:creator><![CDATA[funcky]]></dc:creator><pubDate>Wed, 05 Jul 2006 07:36:24 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 07:40:11 GMT]]></title><description><![CDATA[<p>Ok jetzt habe ich den Speicher so erhöht, wie erhöhe ich ihn nun wieder um eins?<br />
Ich mein damit nicht einfach &quot;size+2&quot; zu schreiben, sondern abhängig davon wieviel Elemente bereits vorhanen sind. Also müsste ja vorher eine Prüfung durchgeführt werden um die Elementanzahl zu ermitteln und aufgrund dessen den reservierten Speicherplatz zu erhöhen.</p>
<p>mfg chuqa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091558</guid><dc:creator><![CDATA[Chuqa]]></dc:creator><pubDate>Wed, 05 Jul 2006 07:40:11 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 07:46:22 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du kannst aus dem pointer nicht die länge ermitteln. Du musst die länge<br />
in der Variable size ablegen.</p>
<pre><code>int size = 1;
driverparam *p_driverParam = (driverparam*) calloc(size, sizeof(driverparam));
size++;

p_driverParam = (driverparam *) realloc(p_driverParam, (size * sizeof(p_driverparam)));
</code></pre>
<p>mfg<br />
funcky</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091562</guid><dc:creator><![CDATA[funcky]]></dc:creator><pubDate>Wed, 05 Jul 2006 07:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 07:58:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Und warum nicht einfach <em>std::vector</em>?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091567</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 05 Jul 2006 07:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 08:02:56 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1652">@funky</a><br />
Ja stimmt , so kann man es machen.</p>
<p>Aber gibt es nicht irgend eine Möglichkeit die Menge der Elemente zu ermitteln, die den Speicherplatz belegen bzw. die Größe der reservierten Speicher auf den der Pointer zeigt?</p>
<p>hmm an Vektor hab ich noch gar nicht gedacht, aber ist natürlich auch ne Möglichkeit. Dann werd ich mich dahingehend ma informieren <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>mfg chuqa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091571</guid><dc:creator><![CDATA[Chuqa]]></dc:creator><pubDate>Wed, 05 Jul 2006 08:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 08:03:23 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>es gibt viele Lösungen. Aber weil du für die Specherverwaltung die funktion &quot;calloc()&quot; (ist eine C-Funktion)genommen hast, hab ich dir diesen Vorschlag gemacht. Hättest die für die Speicherverwaltung &quot;new&quot; genommen, hätte ich dir Vector vorgeschlagen. Du kannst auch für &quot;calloc()&quot; Vector benutzen. Aber wenn Du die Antwort kennst, verstehe ich nicht warum Du fragst ?</p>
<p>mfg<br />
funcky</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091572</guid><dc:creator><![CDATA[funcky]]></dc:creator><pubDate>Wed, 05 Jul 2006 08:03:23 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 08:05:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>nein ein Pointer kennt nur seine Adresse. Bei dynamisch erstellten Arrays must du immer die Anzahl der Elemente merken. Alternativ kannst du (wie bei C-Strings) dafür sorgen, das das letzte Element immer 0 ist. So das du wenigstens beim Iterieren das Ende feststellen kannst.</p>
<p>Deshalb ist ein <em>std::vector</em> in C++ wesentlich angebrachter. Der merkt sich die Anahl seiner Elemente.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091573</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 05 Jul 2006 08:05:14 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 08:10:23 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>&quot;nein ein Pointer kennt nur seine Adresse.&quot;<br />
Ist mir klar.</p>
<p>&quot;Bei dynamisch erstellten Arrays must du immer die Anzahl der Elemente merken.&quot;<br />
Deswegen ja die Variable size.</p>
<p>&quot;Deshalb ist ein std::vector in C++ wesentlich angebrachter.&quot;<br />
Brauchst Du für std::vector noch eine Hilfe ?</p>
<p>mfg<br />
funcky</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091578</guid><dc:creator><![CDATA[funcky]]></dc:creator><pubDate>Wed, 05 Jul 2006 08:10:23 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 08:21:56 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>@ funcky : Mein letzter Post war ein Kommentar zum letzen post von Chuqa, nicht zu deinem, den ich noch nicht beim Schreiben gesehen habe.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091582</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 05 Jul 2006 08:21:56 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 08:42:41 GMT]]></title><description><![CDATA[<p>Gut ich habe eine Vektor mit einem Element angelegt:</p>
<pre><code class="language-cpp">vector &lt;driverparam&gt; drvParams(1);
</code></pre>
<p>Wie erhöhe ich nun die Anzahl der Elemente, die der Vektor aufnehmen kann, um ein Element?</p>
<p>mfg chuqa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091590</guid><dc:creator><![CDATA[Chuqa]]></dc:creator><pubDate>Wed, 05 Jul 2006 08:42:41 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 08:51:05 GMT]]></title><description><![CDATA[<p>Indem du das nächste Element per push_back() hinten anhängst (btw kannst du auch mit einem leeren vector beginnen) oder den vector per resize() vergrößerst.</p>
<pre><code class="language-cpp">//a:
vector&lt;driverparam&gt; drv;
while(fin)
{
  driverparam prm;
  //lies prm aus fin;
  drv.push_back(prm);
}

//b:
vector&lt;driverparam&gt; drv;
while(fin)
{
  int s = drv.size();
  drv.resize(s+1);
  //lies drv[s] aus fin;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1091599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091599</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 05 Jul 2006 08:51:05 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische Speicherverwaltung on Wed, 05 Jul 2006 08:59:21 GMT]]></title><description><![CDATA[<p>Ok herzlichen Dank für eure Hilfe.</p>
<p>mfg chuqa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091612</guid><dc:creator><![CDATA[Chuqa]]></dc:creator><pubDate>Wed, 05 Jul 2006 08:59:21 GMT</pubDate></item></channel></rss>