<?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[new[] und delete[] Operatoren überladen uns Zahl der Elemente des Arrays speichern]]></title><description><![CDATA[<p>Hi, wer kann mir sagen warum folgendes Minimalprogramm nicht funktioniert.</p>
<p><a href="https://ideone.com/sfjBMo" rel="nofollow">https://ideone.com/sfjBMo</a></p>
<p>Ich habe die new[] und delete[] Operatoren überladen, um die größe des Arrays am Anfang des allokierten Speichers zu speichern.</p>
<p>Zudem würde ich gerne wissen, ob der size_t Parameter des new[]-Operators nun die zu allokierenden Bytes oder die Zahl der Elemente übergibt?<br />
Denn Anfangs hatte ich folgendes versucht, was aber nicht funktioniert hat:</p>
<pre><code>void* operator new[](size_t size)
    	{
    		size_t* ptr = static_cast&lt;size_t*&gt;(malloc(size + sizeof(size_t)));
    		if (ptr == nullptr)
    		{
    			throw std::bad_alloc();
    		}
    		*ptr = size;
    		return (ptr + sizeof(size_t));
    	}
</code></pre>
<p>Danach habe ich es in</p>
<pre><code>void* operator new[](size_t size)
    	{
    		size_t* ptr = static_cast&lt;size_t*&gt;(malloc((size + 1) * sizeof(size_t)));
    		if (ptr == nullptr)
    		{
    			throw std::bad_alloc();
    		}
    		*ptr = size;
    		return (ptr + sizeof(size_t));
    	}
</code></pre>
<p>geändert. Jetzt stürzt es zwar nicht ab, aber der Wert der für die Anzahl der Elemente ausgegeben wird stimmt nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/339940/new-und-delete-operatoren-überladen-uns-zahl-der-elemente-des-arrays-speichern</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 15:20:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339940.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Oct 2016 15:46:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to new[] und delete[] Operatoren überladen uns Zahl der Elemente des Arrays speichern on Sun, 09 Oct 2016 15:46:58 GMT]]></title><description><![CDATA[<p>Hi, wer kann mir sagen warum folgendes Minimalprogramm nicht funktioniert.</p>
<p><a href="https://ideone.com/sfjBMo" rel="nofollow">https://ideone.com/sfjBMo</a></p>
<p>Ich habe die new[] und delete[] Operatoren überladen, um die größe des Arrays am Anfang des allokierten Speichers zu speichern.</p>
<p>Zudem würde ich gerne wissen, ob der size_t Parameter des new[]-Operators nun die zu allokierenden Bytes oder die Zahl der Elemente übergibt?<br />
Denn Anfangs hatte ich folgendes versucht, was aber nicht funktioniert hat:</p>
<pre><code>void* operator new[](size_t size)
    	{
    		size_t* ptr = static_cast&lt;size_t*&gt;(malloc(size + sizeof(size_t)));
    		if (ptr == nullptr)
    		{
    			throw std::bad_alloc();
    		}
    		*ptr = size;
    		return (ptr + sizeof(size_t));
    	}
</code></pre>
<p>Danach habe ich es in</p>
<pre><code>void* operator new[](size_t size)
    	{
    		size_t* ptr = static_cast&lt;size_t*&gt;(malloc((size + 1) * sizeof(size_t)));
    		if (ptr == nullptr)
    		{
    			throw std::bad_alloc();
    		}
    		*ptr = size;
    		return (ptr + sizeof(size_t));
    	}
</code></pre>
<p>geändert. Jetzt stürzt es zwar nicht ab, aber der Wert der für die Anzahl der Elemente ausgegeben wird stimmt nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511041</guid><dc:creator><![CDATA[OperatorOverload]]></dc:creator><pubDate>Sun, 09 Oct 2016 15:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to new[] und delete[] Operatoren überladen uns Zahl der Elemente des Arrays speichern on Sun, 09 Oct 2016 16:06:16 GMT]]></title><description><![CDATA[<p>Ok hat sich erledigt. Habe mal die Werte an den unterschiedlichen Speicherstellen ausgelesen und bin jetzt selber auf die Lösung gekommen. Da ich die void* Pointer ja bereits in size_t* Pointer gecastet hatte hätte ich diese natürlich nur um +/- 1 inc/decrementieren dürfen anstatt um sizeof(size_t) :).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511044</guid><dc:creator><![CDATA[OperatorOverload]]></dc:creator><pubDate>Sun, 09 Oct 2016 16:06:16 GMT</pubDate></item><item><title><![CDATA[Reply to new[] und delete[] Operatoren überladen uns Zahl der Elemente des Arrays speichern on Sun, 09 Oct 2016 16:41:22 GMT]]></title><description><![CDATA[<p>Es gibt nette Klassen wie std::vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511047</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Sun, 09 Oct 2016 16:41:22 GMT</pubDate></item></channel></rss>