<?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[Problem mit realloc]]></title><description><![CDATA[<p>Hi</p>
<p>ich schreibe gerade an einer Funktion, in welcher eine Textdatei eingelesen wird und der Inhalt dann in ein dynamisches Array einer Struktur geschrieben wird. Dafür verwende ich realloc, da ich die Anzahl der Elemente nicht kenne. Allerdings habe ich jetzt sporadisch vll alle 10 male folgenden Fehler:</p>
<p>*** glibc detected *** realloc(): invalid size: 0x0000000002ab72c0 ***</p>
<p>Als Wert steht da jedesmal was anderes. Die übergebene Größe ist allerdings immer richtig, lasse sie mir mit cout anzeigen. Welche Größe kann gemeint sein und wie kann ich das lösen??</p>
<p>Über eure Hilfe würde ich mich sehr freuen.</p>
<p>Mfg,<br />
balta</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146866/problem-mit-realloc</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 03:57:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146866.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 May 2006 16:04:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit realloc on Thu, 11 May 2006 16:04:09 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>ich schreibe gerade an einer Funktion, in welcher eine Textdatei eingelesen wird und der Inhalt dann in ein dynamisches Array einer Struktur geschrieben wird. Dafür verwende ich realloc, da ich die Anzahl der Elemente nicht kenne. Allerdings habe ich jetzt sporadisch vll alle 10 male folgenden Fehler:</p>
<p>*** glibc detected *** realloc(): invalid size: 0x0000000002ab72c0 ***</p>
<p>Als Wert steht da jedesmal was anderes. Die übergebene Größe ist allerdings immer richtig, lasse sie mir mit cout anzeigen. Welche Größe kann gemeint sein und wie kann ich das lösen??</p>
<p>Über eure Hilfe würde ich mich sehr freuen.</p>
<p>Mfg,<br />
balta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1055782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1055782</guid><dc:creator><![CDATA[balta]]></dc:creator><pubDate>Thu, 11 May 2006 16:04:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Thu, 11 May 2006 16:15:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Was für ein dynamisches Array ist denn das und wie erstellst du es?<br />
Bei C++ würde man hier eher einen passenden Container (vector, list etc.) statt eines dynamischen Arrays nehmen. Dann brauchst du auch kein realloc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1055796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1055796</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 11 May 2006 16:15:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Thu, 11 May 2006 16:29:20 GMT]]></title><description><![CDATA[<p>Es ist ein Array von folgender Struktur:</p>
<p>struct cEv{<br />
time_t StartTime, VPS;<br />
int Duration;<br />
int EventID;<br />
char *Title, *ShortText, *Description;<br />
};</p>
<p>und ich erstelle es mit:</p>
<p>Events = (cEv *)calloc(1, sizeof(cEv));</p>
<p>und vergrößere es mit:</p>
<p>Events = (cEv <em>)realloc(Events, NumberOfEvents</em>sizeof(cEv));</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1055812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1055812</guid><dc:creator><![CDATA[balta]]></dc:creator><pubDate>Thu, 11 May 2006 16:29:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Fri, 12 May 2006 08:09:02 GMT]]></title><description><![CDATA[<p>Verwendest du C oder C++?<br />
Bei C++ würde ich an deiner Stelle die struct etwas umbauen.</p>
<pre><code class="language-cpp">struct cEv
{
  time_t StartTime, VPS;
  int Duration;
  int EventID;
  std::string Title, ShortText, Description;
};
// statt dynamischen Array dann sowas
std::vector&lt;cEv&gt; cEvVect;
// Elemente hinzufügen dann so
cEv elem;
cEvVect.push_back(elem);
// oder so
cEvVect.push_back(cEv());
</code></pre>
<p>Evtl. könnte man deiner struct noch einen Konstruktor spendieren.</p>
<p>Bezüglich deines Codes. Wo allozierst du eigentlich Speiche für deine char*?<br />
Ist für ein ordentliches free gesorgt?<br />
Das alles brauchst du bei obeigen Code nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056161</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 12 May 2006 08:09:02 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Fri, 12 May 2006 08:13:46 GMT]]></title><description><![CDATA[<p>Wenn er mit realloc() arbeitet, ist es sehr unklug, std::string (oder andere Typen, die einen Konstruktor benötigen) einzusetzen - die C Speicherverwaltung hat keine Ahnung von Konstruktoeren etc. und dürfte dir nur einen Haufen Datenmüll als string-Wert interpretieren.</p>
<p>(wobei - in C++ hat realloc sowieso nichts zu suchen, da kann man stattdessen vector&lt;&gt;en verwenden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056168</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 12 May 2006 08:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Fri, 12 May 2006 08:29:22 GMT]]></title><description><![CDATA[<p>Deswegen habe ich die geänderten Struktur auch in einen vector gepackt.<br />
Gut, ich hätte explizit dazuschreiben sollen, dass hier malloc, realloc und Konsorten nicht mehr verwendet werden dürfen.<br />
Ist hiermit geschehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056185</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 12 May 2006 08:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Fri, 12 May 2006 08:29:48 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Danke für den Tip mit Vectoren... kennt da zufällig jemand ein gues Tutorial?? Habe ich nämlich noch nie was von gehört.</p>
<p>Der Speicher für die char* kommt später ran, wenn ich weiß wie lang die Texte werden müssen.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a>: Gibtes bei structs nen Konstruktor, oder wird das dann zu ner Klasse?? Was würde der mir bringen??</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>:Wenn ich mit vector arbeite, sollte ich dann lieber strings einsetzen??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056186</guid><dc:creator><![CDATA[balta]]></dc:creator><pubDate>Fri, 12 May 2006 08:29:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Fri, 12 May 2006 08:46:27 GMT]]></title><description><![CDATA[<p>Wenn du einen C++-Compiler benutzt sind structs und Klassen nahezu identisch. Der einzige Unterschied liegt im default-Zugriffsbereich der Variablen und Methoden. Bei structs ist er public und bei class private.<br />
Ein Konstruktor in deiner struct vereinfacht die Handhabung. Insbesondere im Zusammenhang mit vector.<br />
BTW, wenn du vector nimmst solltest du auch string nehmen. Dann genügt nämlich der default Copyconstructur bzw. Zuweisungsoperator (sowas brachst du bei STL-Containern).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056213</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 12 May 2006 08:46:27 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Fri, 12 May 2006 08:59:46 GMT]]></title><description><![CDATA[<p>balta schrieb:</p>
<blockquote>
<p>Danke für den Tip mit Vectoren... kennt da zufällig jemand ein gues Tutorial?? Habe ich nämlich noch nie was von gehört.</p>
</blockquote>
<p>Tutorial fällt mir nicht ein, aber ich empfehle mal einen Blick ins Magazin (sehr weit unten im Board) - Stichwort &quot;Aufbau der STL&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056234</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 12 May 2006 08:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Fri, 12 May 2006 15:17:32 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Wenn du einen C++-Compiler benutzt sind structs und Klassen nahezu identisch. Der einzige Unterschied liegt im default-Zugriffsbereich der Variablen und Methoden. Bei structs ist er public und bei class private.<br />
Ein Konstruktor in deiner struct vereinfacht die Handhabung. Insbesondere im Zusammenhang mit vector.<br />
BTW, wenn du vector nimmst solltest du auch string nehmen. Dann genügt nämlich der default Copyconstructur bzw. Zuweisungsoperator (sowas brachst du bei STL-Containern).</p>
</blockquote>
<p>Jetzt hast du mich richtig verwirrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Bin eigentlich Delphi/Pascal-Programmierer, nur hier ging es leider nicht anders. Dort ist es so dass Klassen immer nur Zeiger auf die Klasse sind, während bei records (&lt;- struct) immer gleich der gesamte Speicherbereich reserviert wird, also wenn es zwei 32bit-Variavblen enthält auch gleich 64bit. records können soweit ich weiß auch keinen Konstruktor kriegen.<br />
Was meinst du mit &quot;Dann genügt nämlich der default Copyconstructur bzw. Zuweisungsoperator&quot; ??</p>
<p>Das im Magazin ist wirklich gut erklärt, danke dafür!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056574</guid><dc:creator><![CDATA[balta]]></dc:creator><pubDate>Fri, 12 May 2006 15:17:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Fri, 12 May 2006 15:35:05 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Wie schon gesagt sind Klasse und Structs in C++ fast das gleiche. Belies dich mal in einem Tutorial darüber.<br />
Bezüglich Copyconstructor schau mal hier rein (vielleicht auch den Rest über Klassen)<br />
<a href="http://www.volkard.de/vcppkold/copykonstruktor.html" rel="nofollow">http://www.volkard.de/vcppkold/copykonstruktor.html</a><br />
bzw. auch hier<br />
<a href="http://tutorial.schornboeck.net/bigthree.htm" rel="nofollow">http://tutorial.schornboeck.net/bigthree.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056591</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 12 May 2006 15:35:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Fri, 12 May 2006 19:42:50 GMT]]></title><description><![CDATA[<p>Ich habe dabei jetzt leider noch ein Problem...</p>
<p>Dieses Array bzw. jetzt vector soll ein Element einer Klasse sein, Und von dieser Klasse habe ich wieder ein Array (läuft hier problemlos mit der realloc-Methode) Allerdings bleibt er jetzt beim Erstellen eines der ersten Klassen anscheinend in einer Endlosschleife stecken (es bleibt stehen und CPU 100%). Muss ich dabei noch was beachten?? Man kann es sich so vorstellen:</p>
<pre><code class="language-cpp">class Klasse{
private:
  vector&lt;cEv&gt; Events;
  [...]
}

Klasse *Klassen;

Klassen = (Klasse *)calloc(1, sizeof(Klasse));
for(int i := 1; i &lt; 10; i++){
  Klassen = (Klasse *)realloc(Klassen, i*sizeof(Klasse));
  Klassen[i-1] = Klasse::Klasse();
  cout &lt;&lt; &quot;Klasse &quot; &lt;&lt; i &lt;&lt; &quot;erstellt\n&quot;;
}
</code></pre>
<p>Er bleibt dann bei Klasse 1, 2 oder 3 stecken.</p>
<p>Mfg,<br />
balta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056765</guid><dc:creator><![CDATA[balta]]></dc:creator><pubDate>Fri, 12 May 2006 19:42:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Mon, 15 May 2006 07:16:52 GMT]]></title><description><![CDATA[<p>Dabei mußt du vor allem das alte Problem beachten: &quot;Klasse&quot; hat einen nichttrivialen Konstruktor (auch wenn man's nicht sieht - der braucht dessen Aufruf, um 'Events' ordentlich zu initialisieren), also solltest du es nicht an malloc() und Konsorten verfüttern (diese Funktionen stammen noch aus C-Zeiten - und haben keine Ahnung, was ein &quot;Konstruktor&quot; ist). In C++ nimmt man deshalb new/delete (oder auch wieder STL-Container):</p>
<pre><code class="language-cpp">//a:
Klasse* Klassen = new Klasse[10];
...
delete[] Klassen;

//b:
vector&lt;Klasse&gt; Klassen
for(int i=0;i&lt;10;++i)
  Klassen.push_back(Klasse(i));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1057886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057886</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 15 May 2006 07:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit realloc on Mon, 15 May 2006 14:16:55 GMT]]></title><description><![CDATA[<p>danke, habe jetzt wieder nen vector genommen. Wusste nicht ob ich nen Vector in nem Vector nehmen kann...<br />
jetzt läuft es!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1058190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058190</guid><dc:creator><![CDATA[balta]]></dc:creator><pubDate>Mon, 15 May 2006 14:16:55 GMT</pubDate></item></channel></rss>