<?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[delete[]]]></title><description><![CDATA[<p>Hallo,<br />
wenn man einen dynamisch erstellten Array wieder freigeben will, gibt man ja keine Größe an. Der Compiler oder das OS müssen also selber wissen, wie viele Elemente vorhanden sind. Google sagt mir, dass zusätzlich zum Array-Inhalt noch eine size_t-Variable mit der Größe gespeichert wird.<br />
Wenn dem so ist, gibt es dann nicht auch eine Möglichkeit, die Größe eines dynamischen Arrays herauszufinden?</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
size_t dynarr_size(T* a)
{
	// ?
}

int main()
{
	int *p = new int[20];
	cout &lt;&lt; dynarr_size(p) &lt;&lt; endl;
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/291424/delete</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 19:35:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291424.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Aug 2011 01:08:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 01:08:50 GMT]]></title><description><![CDATA[<p>Hallo,<br />
wenn man einen dynamisch erstellten Array wieder freigeben will, gibt man ja keine Größe an. Der Compiler oder das OS müssen also selber wissen, wie viele Elemente vorhanden sind. Google sagt mir, dass zusätzlich zum Array-Inhalt noch eine size_t-Variable mit der Größe gespeichert wird.<br />
Wenn dem so ist, gibt es dann nicht auch eine Möglichkeit, die Größe eines dynamischen Arrays herauszufinden?</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
size_t dynarr_size(T* a)
{
	// ?
}

int main()
{
	int *p = new int[20];
	cout &lt;&lt; dynarr_size(p) &lt;&lt; endl;
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2107427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107427</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Thu, 18 Aug 2011 01:08:50 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 02:17:25 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ja, es gibt eine Möglichkeit:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;Windows.h&gt;

int main() 
{ 
    int *p = new int[20]; 

	std::cout&lt;&lt; ( ::_msize( reinterpret_cast&lt; void * &gt; ( p ) ) / sizeof( *p ) ) &lt;&lt;std::endl;

    return 0; 
}
</code></pre>
<p><strong>Allerdings</strong> solltest du das nicht tun, da diese Funktion nicht für so etwas vorhergesehen ist. Außerdem ist sie Windowsspezifisch.</p>
<p>Da du dich hier in der C++-Abteilung aufhältst würde ich dir eher zu STL-Containern raten.</p>
<p>Die dritte Lösung wäre eine Struktur, die das Array selber und die Anzahl der Elemente festhält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2107432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107432</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 18 Aug 2011 02:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 05:58:08 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>Hallo,<br />
wenn man einen dynamisch erstellten Array wieder freigeben will, gibt man ja keine Größe an. Der Compiler oder das OS müssen also selber wissen, wie viele Elemente vorhanden sind. Google sagt mir, dass zusätzlich zum Array-Inhalt noch eine size_t-Variable mit der Größe gespeichert wird.</p>
</blockquote>
<p>Ja, vereinfachend gesagt.</p>
<p>Wurstinator schrieb:</p>
<blockquote>
<p>Wenn dem so ist, gibt es dann nicht auch eine Möglichkeit, die Größe eines dynamischen Arrays herauszufinden?</p>
</blockquote>
<p>Nein.<br />
Wie lange Kóyaánasqatsis dunkler Hack funktioniert, steht in den Sternen.</p>
<p>Denn der Compiler darf optimieren.<br />
Vielleicht speichert er an genannter Stelle nur einen Zeiger auf denjenigen Small Object Allocator, der für diesen Block zuständig war, bzw nullptr für den Großen. Das reicht für genaues Freigeben. Für Destruktoraufrufe muß er zusätzlich noch die genau Anzahl wissen. Aber nur, wenn es nicht PODs sind. Für dieses int-Array wäre Sense. Auch könnte optimiert werden, daß wenn new[] und delete[] in der selben Funktion stehen und keine andere mit dem Zeiger aufgerufen wird, die Größe nicht gespeicher wird, da sie dem Compiler eh bekannt ist. Es könnte auch für jede Art zu deletendem Block mit compilezeitkonstanter Größe eine eigene optimierte Funktion angelegt werden und dort nur dieser Funktionszeiger gespeichert wird.<br />
Ok, alles recht unwahrscheinlich. Aber früher oder später wird sowas geschehen und der dunkle Hack wird abgestraft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2107440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107440</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 18 Aug 2011 05:58:08 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 11:56:33 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Wie lange Kóyaánasqatsis dunkler Hack funktioniert, steht in den Sternen.</p>
</blockquote>
<p>Das du mich immer so fertig machen musst... <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="😞"
    /><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2107552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107552</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 18 Aug 2011 11:56:33 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 13:39:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie lange Kóyaánasqatsis dunkler Hack funktioniert, steht in den Sternen.</p>
</blockquote>
<p>Okay, also ist nicht festgelegt, wie das gespeichert werden muss?<br />
Danke.</p>
<blockquote>
<p>Da du dich hier in der C++-Abteilung aufhältst würde ich dir eher zu STL-Containern raten.</p>
</blockquote>
<p>Ich weiß, habs nur aus Interesse gefragt <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/2107633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107633</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Thu, 18 Aug 2011 13:39:14 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 13:47:35 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Wie lange Kóyaánasqatsis dunkler Hack funktioniert, steht in den Sternen.</p>
</blockquote>
<p>Das du mich immer so fertig machen musst... <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="😞"
    /><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>Du bist jetzt mächtig stolz darauf dass du weisst wie MSVC das macht, und wie man daher mit einem dreckigen Hack an die Grösse drankommen kann. Und jetzt musst du dieses Wissen, auf das du ja so stolz bist, natürlich in die Welt hinausschreien.<br />
Verständlich.<br />
Aber sehr lästig, da du damit vermutlich mehr schadest als du hilfst.</p>
<p>Ein einfacher Hinweis ala &quot;ja, der Compiler speichert die Grösse irgendwo ab, es gibt aber keinen standardisierten Weg da dranzukommen&quot; wäre viel hilfreicher gewesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2107637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107637</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 18 Aug 2011 13:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 20:23:57 GMT]]></title><description><![CDATA[<p>Also ein bisschen Fertig bist du ja schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2107818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107818</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 18 Aug 2011 20:23:57 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 20:50:01 GMT]]></title><description><![CDATA[<p>Weil?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2107826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107826</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 18 Aug 2011 20:50:01 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 22:43:35 GMT]]></title><description><![CDATA[<p>Und so am Rande: Wozu der <code>reinterpret_cast&lt;void*&gt;</code> ?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2107876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107876</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 18 Aug 2011 22:43:35 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 22:53:21 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Und so am Rande: Wozu der <code>reinterpret_cast&lt;void*&gt;</code> ?</p>
<p>Grüssli</p>
</blockquote>
<p>Sieht magischer aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2107883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107883</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 18 Aug 2011 22:53:21 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Thu, 18 Aug 2011 23:33:48 GMT]]></title><description><![CDATA[<p>Ja, ich kann nicht proggen. Ihr habt mich ertappt <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="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2107895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2107895</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 18 Aug 2011 23:33:48 GMT</pubDate></item><item><title><![CDATA[Reply to delete[] on Fri, 19 Aug 2011 10:44:29 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Weil?</p>
</blockquote>
<p>Das wissen der welt nicht nur für dich zugängig ist. Jemand fragt etwas, jemand bekommt eine antwort. Wieso maßt du dir an entscheiden zu können was(wieviel wissen) für diese person die richtige Antwort ist? Es wurde sogar drauf hin gewiesen, dass das ne dumme idee ist, es so zu machen. Aber wieso darf man sowas nicht wissen? Überheblichkeitsdenken, da man es selber ja weiss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2108012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2108012</guid><dc:creator><![CDATA[anmaßer]]></dc:creator><pubDate>Fri, 19 Aug 2011 10:44:29 GMT</pubDate></item></channel></rss>