<?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[realloc() - da passt was nicht..]]></title><description><![CDATA[<p>Hi,</p>
<p>ich speichere mehrere daten hintereinander und weise daher Speicher dynamisch zu.</p>
<p>Folgende Funktion habe ich mir dazu gebastelt:</p>
<pre><code class="language-cpp">BYTE *bData;

UINT CBinaryData::GetSize()
{
	if (bData != NULL)
		// Gesamte Datengröße ermitteln:
		return(_msize(bData));
	else
		return (0);
}

BYTE* CBinaryData::Allocate(UINT uSize)
{
	if (uSize &gt; 0)
	{
		UINT uCurSize;

		// Aktuelle Größe ermitteln:
		uCurSize = GetSize();

		if ((bData == NULL) &amp;&amp; (uCurSize == 0))
		{
			// Größe reservieren für angeforderte Datengröße Reservieren:
			bData = (BYTE*) malloc(uSize);

			return (bData);
		}
		else if (uCurSize &gt; 0)
		{
			BYTE *bTemp;

			// Größe für angeforderte Datengröße erweitern:
			bTemp = (BYTE*) realloc(bData, uCurSize + uSize);

			if (bTemp != NULL)
			{
				// Pointer übernehmen:
				bData = bTemp;

				// Aktuelle Position zurückgeben:
				return (bTemp + uCurSize);
			}
			else
				// 'Alten' Speicher löschen:
				ResetBinaryData();
		}
	}

	return (NULL);
}
</code></pre>
<p>Jetzt tritt folgender Fehler auf:</p>
<p>Jedes Mal wenn ich neue Daten an meine vorhandenen Daten anhängen möchte rufe ich meine <em>Allocate()</em>-Funktion auf. Anschließend schreibe ich die neuen Daten auf die Adresse die mir die Funktion zurück gibt.</p>
<p><strong>Aufruf 1.</strong> Es ist kein Speicher reserviert - <em>malloc()</em> reserviert Speicher<br />
<strong>Aufruf 2, 3, ...</strong> Es ist bereits Speicher reserviert - <em>realloc()</em> erweitert den zuvor reservierten Speicher</p>
<p>Mir ist aufgefallen dass ich die ganze Funktionalität benutzen kann, wenn ich ein oder zwei Datensätze benutze.<br />
Sobald ich drei Datensätze benutze (also das zweite Mal <em>realloc()</em> verwende) habe ich ungültige werde in meinem Datensatz (Vermutlich zeigen die Pointer auf falsche Speicherbereiche).</p>
<p>Was mache ich denn jetzt falsch?</p>
<p>Gruß,<br />
Marco</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236847/realloc-da-passt-was-nicht</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 14:41:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236847.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Mar 2009 17:33:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Fri, 20 Mar 2009 17:33:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich speichere mehrere daten hintereinander und weise daher Speicher dynamisch zu.</p>
<p>Folgende Funktion habe ich mir dazu gebastelt:</p>
<pre><code class="language-cpp">BYTE *bData;

UINT CBinaryData::GetSize()
{
	if (bData != NULL)
		// Gesamte Datengröße ermitteln:
		return(_msize(bData));
	else
		return (0);
}

BYTE* CBinaryData::Allocate(UINT uSize)
{
	if (uSize &gt; 0)
	{
		UINT uCurSize;

		// Aktuelle Größe ermitteln:
		uCurSize = GetSize();

		if ((bData == NULL) &amp;&amp; (uCurSize == 0))
		{
			// Größe reservieren für angeforderte Datengröße Reservieren:
			bData = (BYTE*) malloc(uSize);

			return (bData);
		}
		else if (uCurSize &gt; 0)
		{
			BYTE *bTemp;

			// Größe für angeforderte Datengröße erweitern:
			bTemp = (BYTE*) realloc(bData, uCurSize + uSize);

			if (bTemp != NULL)
			{
				// Pointer übernehmen:
				bData = bTemp;

				// Aktuelle Position zurückgeben:
				return (bTemp + uCurSize);
			}
			else
				// 'Alten' Speicher löschen:
				ResetBinaryData();
		}
	}

	return (NULL);
}
</code></pre>
<p>Jetzt tritt folgender Fehler auf:</p>
<p>Jedes Mal wenn ich neue Daten an meine vorhandenen Daten anhängen möchte rufe ich meine <em>Allocate()</em>-Funktion auf. Anschließend schreibe ich die neuen Daten auf die Adresse die mir die Funktion zurück gibt.</p>
<p><strong>Aufruf 1.</strong> Es ist kein Speicher reserviert - <em>malloc()</em> reserviert Speicher<br />
<strong>Aufruf 2, 3, ...</strong> Es ist bereits Speicher reserviert - <em>realloc()</em> erweitert den zuvor reservierten Speicher</p>
<p>Mir ist aufgefallen dass ich die ganze Funktionalität benutzen kann, wenn ich ein oder zwei Datensätze benutze.<br />
Sobald ich drei Datensätze benutze (also das zweite Mal <em>realloc()</em> verwende) habe ich ungültige werde in meinem Datensatz (Vermutlich zeigen die Pointer auf falsche Speicherbereiche).</p>
<p>Was mache ich denn jetzt falsch?</p>
<p>Gruß,<br />
Marco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683561</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Fri, 20 Mar 2009 17:33:30 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Fri, 20 Mar 2009 18:00:35 GMT]]></title><description><![CDATA[<p>Du bist erstmal im falschen Forum, damit fängt's an <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="🙄"
    /></p>
<p>Please goto C++ <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/1683579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683579</guid><dc:creator><![CDATA[pointercrash**]]></dc:creator><pubDate>Fri, 20 Mar 2009 18:00:35 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 12:26:58 GMT]]></title><description><![CDATA[<p>Hat sich mittlerweile geklärt - lag nicht an dieser Funktion -.-</p>
<p>Hab ich wieder nicht genug probiert vorm posten <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/1683765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683765</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Sat, 21 Mar 2009 12:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 14:09:47 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-1819.html" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-10.html" rel="nofollow">ANSI C</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683789</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sat, 21 Mar 2009 14:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 17:50:08 GMT]]></title><description><![CDATA[<p>Wieso nimmst Du nicht new/delete, dann kannst Du Dir auch das Pointercasting sparen, das unter C quasi als Todsünde geahndet wird?</p>
<pre><code>C != C++;
</code></pre>
<p><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/1683927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683927</guid><dc:creator><![CDATA[pointercrash**]]></dc:creator><pubDate>Sat, 21 Mar 2009 17:50:08 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 18:00:15 GMT]]></title><description><![CDATA[<p>Mit new / delete bin ich zu sehr eingeschränkt.<br />
Ich muss dynamisch immer unterschiedlich viel speicher reservieren. Das geht auf diese Weise viel besser.</p>
<p>Das mit dem Casting sehe ich nicht so eng <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/1683930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683930</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Sat, 21 Mar 2009 18:00:15 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 18:07:53 GMT]]></title><description><![CDATA[<p>Red Skall schrieb:</p>
<blockquote>
<p>Mit new / delete bin ich zu sehr eingeschränkt.</p>
</blockquote>
<p>Kaum eingeschränkter als mit new und delete. realloc() mach in den meisten Fällen nichts anderes als malloc(), memcpy(), free() - außer es kann ausnahmsweise doch mal den ursprünglichen Speicherbereich vergrößern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683933</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 21 Mar 2009 18:07:53 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 18:18:10 GMT]]></title><description><![CDATA[<p>Mir geht es darum den Bereich zu vergrößern. Oder verstehe ich da was falsch <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="😕"
    /> <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/1683938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683938</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Sat, 21 Mar 2009 18:18:10 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 18:21:45 GMT]]></title><description><![CDATA[<p>Red Skall schrieb:</p>
<blockquote>
<p>Oder verstehe ich da was falsch <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="😕"
    /> <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>
</blockquote>
<p>Ja scheinbar. realloc kann ja nicht garantieren dass noch genug Platz ist, um den Bereich einfach so zu vergrößern. Falls kein Platz ist, nimmt realloc einen komplett neuen Bereich und kopiert den Kram aus dem alten Bereich da rein und gibt danach den alten Bereich frei. Und das ist eher die Regel als die Ausnahme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683941</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 21 Mar 2009 18:21:45 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 18:32:26 GMT]]></title><description><![CDATA[<p>Wäre es möglich, intern <code>std::vector</code> aus der Standard Template Library zu benutzen, oder ist das zu High-Level? Der reserviert immer ein bisschen mehr Speicher als benötigt, somit kannst du in den meisten Fällen Elemente anhängen, ohne den Speicherbereich neu anfordern zu müssen.</p>
<p>Und jetzt bin ich noch nicht auf die anderen Vorteile wie Aufruf einer einzigen Methode, Minimierung des Gefrickels und der damit verbundenen Fehleranfälligkeit, Erhöhung der Wartbarkeit, Debug-Unterstützung durch Assertions, Generizität und leichte Austauschbarkeit mit anderen Containern oder Elementtypen eingegangen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683944</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 21 Mar 2009 18:32:26 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 18:30:36 GMT]]></title><description><![CDATA[<p>Ich weis, dass realloc den Bereich meistens verschiebt, aber das ist ok.</p>
<p>Hauptsache, es wird neuer Speicher reserviert. Mehr will ich ja garnicht.<br />
Der Fehler lag an nem anderen Programmteil, die Funktion funktioniert so wie sie soll.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683946</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Sat, 21 Mar 2009 18:30:36 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 19:05:11 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>...Falls kein Platz ist, nimmt realloc einen komplett neuen Bereich und kopiert den Kram aus dem alten Bereich da rein und gibt danach den alten Bereich frei. Und das ist eher die Regel als die Ausnahme.</p>
</blockquote>
<p>Kann ich so nicht ganz bestätigen, was aber keine Rolle spielt, weil realloc() genau dann das Kopieren anfangen wird, wenn man's absolut nicht brauchen kann, man kann's ja nicht steuern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> . Bei Realtime- Problemen also generell Finger weg vom Heap, immer über statische Arrays buffern, schadet auch bei &quot;normalen Programmen&quot; nicht, verbessert i.d.R. das Laufzeitverhalten.<br />
<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/1683953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683953</guid><dc:creator><![CDATA[pointercrash**]]></dc:creator><pubDate>Sat, 21 Mar 2009 19:05:11 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 19:09:28 GMT]]></title><description><![CDATA[<p>pointercrash() schrieb:</p>
<blockquote>
<p>[...] weil realloc() genau dann das Kopieren anfangen wird, wenn man's absolut nicht brauchen kann, man kann's ja nicht steuern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> . Bei Realtime- Problemen also generell Finger weg vom Heap, immer über statische Arrays buffern, schadet auch bei &quot;normalen Programmen&quot; nicht, verbessert i.d.R. das Laufzeitverhalten.</p>
</blockquote>
<p>Wieder ein Grund für die STL. Wenn man <code>std::vector</code> einsetzt, kann man mittels <code>reserve()</code> sicherstellen, dass genügend Speicher vorhanden ist. Bei einer <code>std::deque</code> sind Reallokationen weniger schlimm, da es sich nur um Teilbereiche handelt, bei einer <code>std::list</code> werden sogar einzelne Elemente angefordert.</p>
<p>Abgesehen davon ist der Stack nicht wirklich eine Lösung, da dessen Speicher sehr begrenzt ist und die Dimension von statischen Arrays zur Compilezeit feststehen muss.</p>
<p>Red Skall, hast du meinen letzten Beitrag noch gelesen? Ich glaube, du hast deinen nämlich gerade abgeschickt, bevor du meinen gesehen hast... <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/1683956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683956</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 21 Mar 2009 19:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 19:32:09 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Abgesehen davon ist der Stack nicht wirklich eine Lösung, da dessen Speicher sehr begrenzt ist und die Dimension von statischen Arrays zur Compilezeit feststehen muss.</p>
</blockquote>
<p>Der Ur- Post stand im ANSI-C- Forum und das realloc() ist eine &lt;cstdlib&gt;- Geschichte. In Ermangelung einer STL habe ich &quot;C- stylish&quot; geantwortet und da wirken statische Buffer oft Wunder.<br />
Sinnvoll dimensionierte Buffer sparen viel Rechenzeit, die ansonsten zur Laufzeit der Heapverwaltung aufgebürdet würde. <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/1683962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683962</guid><dc:creator><![CDATA[pointercrash**]]></dc:creator><pubDate>Sat, 21 Mar 2009 19:32:09 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 19:45:38 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>: Jo, habs gerade gelesen <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>Aber mit Vektoren kenne ich mich nicht so aus <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 />
Ich finde so wie ich das gemacht habe ist das ganz gut gelöst.</p>
<p>Das mit der Rechenzeit die während der dynamischen Erzeugung benötigt wird stimmt natürlich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683965</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Sat, 21 Mar 2009 19:45:38 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 20:03:20 GMT]]></title><description><![CDATA[<p>Red Skall schrieb:</p>
<blockquote>
<p>Aber mit Vektoren kenne ich mich nicht so aus <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>
</blockquote>
<p>Dann wird es aber dringend Zeit, dies zu lernen. Die Standardbibliothek ist ein wesentlicher Bestandteil von C++.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683977</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 21 Mar 2009 20:03:20 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 20:42:47 GMT]]></title><description><![CDATA[<p>pointercrash() schrieb:</p>
<blockquote>
<p>Sinnvoll dimensionierte Buffer sparen viel Rechenzeit, die ansonsten zur Laufzeit der Heapverwaltung aufgebürdet würde</p>
</blockquote>
<p>absolut richtig. in vielen fällen ist die dynamik, die malloc und ähnliche lösungen bieten, gar nicht nötig und sorgt nur für schlechtes laufzeitverhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683996</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 21 Mar 2009 20:42:47 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sat, 21 Mar 2009 22:38:55 GMT]]></title><description><![CDATA[<p>pointercrash() schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Abgesehen davon ist der Stack nicht wirklich eine Lösung, da dessen Speicher sehr begrenzt ist und die Dimension von statischen Arrays zur Compilezeit feststehen muss.</p>
</blockquote>
<p>Der Ur- Post stand im ANSI-C- Forum und das realloc() ist eine &lt;cstdlib&gt;- Geschichte. In Ermangelung einer STL habe ich &quot;C- stylish&quot; geantwortet und da wirken statische Buffer oft Wunder.</p>
</blockquote>
<p>Ich verstehe den Zusammenhang zu meinem Quote nicht ganz - was ich gesagt habe, gilt genauso für C. Klar können statische Arrays auch sinnvoll sein, das bestreite ich gar nicht. Aber das hat dann nichts mehr mit <code>realloc()</code> oder der STL zu tun. Performance beim Stack zwar ein Vorteil, aber man sollte nicht vergessen, dass man dabei auch Flexibilität verliert. Und nicht immer ist Performance das Entscheidende. Deshalb finde ich den folgenden Satz von dir zu radikal.</p>
<p>pointercrash() schrieb:</p>
<blockquote>
<p>Bei Realtime- Problemen also generell Finger weg vom Heap, immer über statische Arrays buffern, schadet auch bei &quot;normalen Programmen&quot; nicht, verbessert i.d.R. das Laufzeitverhalten.</p>
</blockquote>
<p>Red Skall schrieb:</p>
<blockquote>
<p>Aber mit Vektoren kenne ich mich nicht so aus <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 />
Ich finde so wie ich das gemacht habe ist das ganz gut gelöst.</p>
</blockquote>
<p>Ich würde auch meinen, dass du das mal anschauen solltest. Zumindest würde ich von niemandem sagen, er beherrsche C++, solange er sich nicht mit der Standardbibliothek (und der STL) auskennt... <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>Die STL bietet einem wirklich sehr viel Komfort und Freiheit. Zudem ist es auch sehr gut möglich, dass ein besseres Laufzeitverhalten erzielt wird, da die Container oft eine relativ intelligente Speicherverwaltung mit sich bringen. Mit der Möglichkeit, Container auszutauschen und selber noch herumzuexperimentieren, erreicht man dann erst das volle Potenzial. Von der besseren Wartbarkeit, Sicherheit (Speicherfehler, Memory Leaks, gute Assertions) und Übersichtlichkeit ganz zu schweigen.</p>
<p>Einführende Artikel in die Standard Template Library findest du <a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">hier</a>. Glaub mir, das ist einen Blick wert. <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/1684074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684074</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 21 Mar 2009 22:38:55 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Sun, 22 Mar 2009 13:34:55 GMT]]></title><description><![CDATA[<p>Danke für den Link, hab gerade überflogen. Das schaue ich mir auf jeden Fall nochmal genau an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684263</guid><dc:creator><![CDATA[Red Skall]]></dc:creator><pubDate>Sun, 22 Mar 2009 13:34:55 GMT</pubDate></item><item><title><![CDATA[Reply to realloc() - da passt was nicht.. on Wed, 25 Mar 2009 17:09:36 GMT]]></title><description><![CDATA[<p>Was realloc() und die (nicht wirklich vorhandenen) C++-Äquivalente angeht gibts auch eine angeregte Diskussion auf comp.lang.c++.moderated:</p>
<p><a href="http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/b2bfadcc9efa3ba1#" rel="nofollow">http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/b2bfadcc9efa3ba1#</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685928</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 25 Mar 2009 17:09:36 GMT</pubDate></item></channel></rss>