<?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[Verständnisproblem zu calloc und free]]></title><description><![CDATA[<p>Hey,</p>
<p>ich les mich grad in C und in C++ ein. Zur Zeit bin ich bei der dynamischen Speicherverwaltung und bin dabei auf die Methoden calloc und free gestoßen. calloc liefert ja einen Zeiger auf das 1. Element des reservierten Speichers. Das hab ich soweit verstanden, aber ich versteh nich, wie free wissen kann wiviel Speicher er freigeben soll, wenn er nur den Pointer bekommt. Gibt es da sowas wie ein terminierendes Zeichen oder Speichert er irgendwo die reservierten Speicherblöcke? Wäre toll, wenn mir das jmd erklären kann.</p>
<p>MfG &amp; Thx Bergmann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265813/verständnisproblem-zu-calloc-und-free</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 20:31:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265813.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Apr 2010 08:58:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisproblem zu calloc und free on Thu, 29 Apr 2010 08:58:52 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>ich les mich grad in C und in C++ ein. Zur Zeit bin ich bei der dynamischen Speicherverwaltung und bin dabei auf die Methoden calloc und free gestoßen. calloc liefert ja einen Zeiger auf das 1. Element des reservierten Speichers. Das hab ich soweit verstanden, aber ich versteh nich, wie free wissen kann wiviel Speicher er freigeben soll, wenn er nur den Pointer bekommt. Gibt es da sowas wie ein terminierendes Zeichen oder Speichert er irgendwo die reservierten Speicherblöcke? Wäre toll, wenn mir das jmd erklären kann.</p>
<p>MfG &amp; Thx Bergmann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889846</guid><dc:creator><![CDATA[Bergmann89]]></dc:creator><pubDate>Thu, 29 Apr 2010 08:58:52 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem zu calloc und free on Thu, 29 Apr 2010 09:11:26 GMT]]></title><description><![CDATA[<p>das ist der Implementierung (d.h. dem Compiler und dem Betriebssystem) überlassen und braucht dich eigentlich nicht interessieren. Im Grunde kannst du dich drauf verlassen dass wenn du ein free auf einen von malloc (calloc?) gelieferten Pointer aufrufst, der komplette dazugehörige Speicher wieder freigegeben wird.<br />
Daher die kurze Antwort: Who cares <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="🙂"
    /><br />
Lange Antwort: Häufig wird das so gemacht, dass der tatsächlich angeforderte Speicherblock ein bisschen größer ist (meist 4 Byte). In diesen 4 yte steht dann drin wie groß der Block ist, der Pointer verweist auf den Rest des Bereichs. Beim Aufruf von free wird dann geschaut, was in den 4 Byte vor dem übergebenen Pointer steht und der entsprechende Bereich freigegeben.<br />
<strong>Aber:</strong> das ist wie gesagt nirgendwo definiert und nur eine von vielen Möglcihektien, sowas umzusetzen. Verlass dich nicht drauf und versuch vor allem nicht, die die 4 Byte davor anzuschauen, das wäre nämlich undefiniert. (Das Wörtchen undefiniert bzw. undefiniertes Verhalten heißt so viel wie &quot;Hölle&quot;, &quot;Finger weg&quot; und &quot;Es <em>könnten</em> jetzt kleine grüne Männchen aus deinem Rechner steigen und dich in die Sonne schießen...&quot;)</p>
<p>PS: malloc/calloc/free ist C. Der pendant in C++ wäre new/delete und new[]/delete[].</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1889851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1889851</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 29 Apr 2010 09:11:26 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem zu calloc und free on Thu, 29 Apr 2010 16:03:10 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>danke für die Antwort. Ich hab mich nur gewundert bzw. gefragt ob die Freigabe dann auch richtig is. Aber meine Bedenken hast du ja jetz befriedigend vernichtet <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="🙂"
    /> Danke.</p>
<p>MfG &amp; Thx Bergmann.</p>
<p>p.s.: calloc = malloc + Initialisierung des Speichers mit 0en</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890015</guid><dc:creator><![CDATA[Bergmann89]]></dc:creator><pubDate>Thu, 29 Apr 2010 16:03:10 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem zu calloc und free on Thu, 29 Apr 2010 16:06:50 GMT]]></title><description><![CDATA[<blockquote>
<p>p.s.: calloc = malloc + Initialisierung des Speichers mit 0en</p>
</blockquote>
<p>Jopp - auch <a href="http://www.cplusplus.com/reference/clibrary/cstdlib/calloc/" rel="nofollow">hier</a> nachzulesen.<br />
sollte so und so deine erste anlaufstelle sein, wenn du fragen zur standard lib hast</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890020</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 29 Apr 2010 16:06:50 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem zu calloc und free on Thu, 29 Apr 2010 21:02:16 GMT]]></title><description><![CDATA[<p>Jo,</p>
<p>die Seite kenn ich schon, guck ich auch immer als erstes, weils da auch immer guten Bsp-Code gibt...<br />
Hab noch ne kleine Frage. Is zwar offtopic, aber ich will jetzt deswegen nich extra n Thread aufmachen: Gibts hier sowas wie beobachtete Themen? Also Themen die ich abonnieren kann?</p>
<p>MfG &amp; Thx Bergmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890192</guid><dc:creator><![CDATA[Bergmann89]]></dc:creator><pubDate>Thu, 29 Apr 2010 21:02:16 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem zu calloc und free on Fri, 30 Apr 2010 04:16:39 GMT]]></title><description><![CDATA[<p>irgendwann gabs glaube ich mal so ne fkt., dass man benachrichtigt wurde (aber nur, wenn man nen eigenen thread aufgemacht hatte!?) - aber ich glaub, das wurde ganz rausgenommen...</p>
<p>das müsstest du mal im forentechnik-thread fragen...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890243</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 30 Apr 2010 04:16:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem zu calloc und free on Fri, 30 Apr 2010 07:20:33 GMT]]></title><description><![CDATA[<p>Bergmann89 schrieb:</p>
<blockquote>
<p>Gibts hier sowas wie beobachtete Themen? Also Themen die ich abonnieren kann?</p>
</blockquote>
<p>Rechts unten &quot;Bei Antworten zu diesem Thema benachrichtigen&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890268</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 30 Apr 2010 07:20:33 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem zu calloc und free on Fri, 30 Apr 2010 08:12:24 GMT]]></title><description><![CDATA[<p>Ich denke es ist doch eher so dass der Kernel Informationen zu den einzelnen Heap-Blöcken speichert, da wird höchstwarscheinlich auch die Größe dabei sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890291</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Fri, 30 Apr 2010 08:12:24 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem zu calloc und free on Fri, 30 Apr 2010 08:19:09 GMT]]></title><description><![CDATA[<p>Icematix schrieb:</p>
<blockquote>
<p>Ich denke es ist doch eher so dass der Kernel Informationen zu den einzelnen Heap-Blöcken speichert, da wird höchstwarscheinlich auch die Größe dabei sein.</p>
</blockquote>
<p>Kommt drauf an, wie gesagt. Durchaus möglich, dass die Anforderungen direkt an den Kernel gehn, genausogut denkbar, dass es einen eigenen Speichermanager gibt, der vom Kernel größere Blöcke anfordert und die für die einzelnen Speicheranforderungen nochmal zerpflückt. Und der könnte es so handhaben wie beschrieben. Oder ganz anders. Ist Betriebssytsem- und Compiler-abhängig und für den Entwickler die meiste Zeit irrelevant, wenn er nicht grade in höchsten -Nöten steckt und aus solchen Details noch einzelne Bits rauskitzeln muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890301</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 30 Apr 2010 08:19:09 GMT</pubDate></item></channel></rss>