<?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-handler]]></title><description><![CDATA[<p>Hallo leute.<br />
Ich habe mal eine frage.<br />
und zwar...weiss jemand von euch wie man einen new-Handler selbst implementiert?</p>
<p>für tipps wäre ich sehr erfreut</p>
<p>danke schonmal im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150704/new-handler</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 21:36:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150704.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Jun 2006 15:45:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to new-handler on Mon, 19 Jun 2006 15:45:12 GMT]]></title><description><![CDATA[<p>Hallo leute.<br />
Ich habe mal eine frage.<br />
und zwar...weiss jemand von euch wie man einen new-Handler selbst implementiert?</p>
<p>für tipps wäre ich sehr erfreut</p>
<p>danke schonmal im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080728</guid><dc:creator><![CDATA[sharif]]></dc:creator><pubDate>Mon, 19 Jun 2006 15:45:12 GMT</pubDate></item><item><title><![CDATA[Reply to new-handler on Mon, 19 Jun 2006 16:01:05 GMT]]></title><description><![CDATA[<p>kannst ignorieren kein gängiges system ist noch benutzbar wenn es tatsächlich keinen speicher mehr gibt, die machen schon vorher schlapp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1080735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080735</guid><dc:creator><![CDATA[dragon90#]]></dc:creator><pubDate>Mon, 19 Jun 2006 16:01:05 GMT</pubDate></item><item><title><![CDATA[Reply to new-handler on Tue, 20 Jun 2006 13:08:46 GMT]]></title><description><![CDATA[<p>Du meinst Operator new? Das ist relativ einfach.</p>
<pre><code class="language-cpp">void* operator new(std::size_t size) throw(std::bad_alloc)
{
	void* p = /* hier mittels deines Speichermanagers den benoetigten Speicher (size) reservieren */;
	if (!p)
		throw std::bad_alloc();
	return p;
}
</code></pre>
<p>Du solltest aber darauf achten, zu jedem Operator new einen passenden Operator delete zu implementieren.</p>
<pre><code class="language-cpp">void operator delete(void* p) throw()
{
	/* hier mittels deines Speichermanagers den reservierten Speicher (p) freigeben */
}
</code></pre>
<p>Die Funktionen müssen, sofern es die globen Operatoren new/delete sein sollen, auch im globalen Namensraum implementiert sein.<br />
Selbiges ist übrigens genauso mit new[]/delete[] möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081437</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 20 Jun 2006 13:08:46 GMT</pubDate></item><item><title><![CDATA[Reply to new-handler on Tue, 20 Jun 2006 13:29:57 GMT]]></title><description><![CDATA[<p>sharif schrieb:</p>
<blockquote>
<p>Hallo leute.<br />
Ich habe mal eine frage.<br />
und zwar...weiss jemand von euch wie man einen new-Handler selbst implementiert?</p>
<p>für tipps wäre ich sehr erfreut</p>
<p>danke schonmal im voraus</p>
</blockquote>
<p>das ist nicht weiter schwer:</p>
<pre><code class="language-cpp">void (*old_handler)();
void my_handler()
{
    // besorg mehr speicher
    // optional rufen wir den alten handler auf
    if ( kein_speicher &amp;&amp; old_handler != 0 )
    {
        old_handler();
        return;
    }
    if ( fehler )
    {
        throw std::bad_alloc(); // oder
        exit(foo); // oder
        abort();
    }
}
// und dann irgendwo installieren:

old_handler = std::set_new_handler( my_handler );

// und ggf. wieder deinstallieren

std::set_new_handler( old_handler );
</code></pre>
<p>sonderlich sinnvoll ist das im allgemeinen nicht. man könnte es auch für logging zwecke verwenden. im embedded bereich hat es möglicherweise größere bedeutung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081457</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 20 Jun 2006 13:29:57 GMT</pubDate></item></channel></rss>