<?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[operator new und Konstruktor]]></title><description><![CDATA[<p>Hi!</p>
<p>Wenn ich das habe:</p>
<pre><code class="language-cpp">void* operator new(size_t s)
{
  return (void*)malloc(s);
}
</code></pre>
<p>und ich dann sowa mache:</p>
<pre><code class="language-cpp">Obj* myobj = new Obj(1,2,3);
</code></pre>
<p>Wird dann auch der Konstruktor von Obj aufgerufen? Steht ja nichts im operator new dazu drin, wüsste aber auch nich, wie as gehen sollte, da der Typ ja in operator new nicht bekannt ist. wir der konstruktor also automatisch aufgerufen?</p>
<p>Gruß, Maxi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/172539/operator-new-und-konstruktor</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 05:33:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/172539.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Feb 2007 06:26:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operator new und Konstruktor on Tue, 06 Feb 2007 06:26:18 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Wenn ich das habe:</p>
<pre><code class="language-cpp">void* operator new(size_t s)
{
  return (void*)malloc(s);
}
</code></pre>
<p>und ich dann sowa mache:</p>
<pre><code class="language-cpp">Obj* myobj = new Obj(1,2,3);
</code></pre>
<p>Wird dann auch der Konstruktor von Obj aufgerufen? Steht ja nichts im operator new dazu drin, wüsste aber auch nich, wie as gehen sollte, da der Typ ja in operator new nicht bekannt ist. wir der konstruktor also automatisch aufgerufen?</p>
<p>Gruß, Maxi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1223600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1223600</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Tue, 06 Feb 2007 06:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to operator new und Konstruktor on Tue, 06 Feb 2007 06:39:14 GMT]]></title><description><![CDATA[<p>Du überschreibst damit lediglich die Funktion <em>operator new</em>. Nicht aber den Operator selbst. Die Funktion <em>operator new</em> wird von Operator new aufgerufen um Speicher für das Objekt zu bekommen. Außerdem ruft der Operator new u.A. auch den Konstruktur auf.</p>
<p>Also: Jep, der Konstruktor wird aufgerufen und du kannst nichts, rein garnichts daran ändern! <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="😉"
    /> Es sei denn du rufst direkt die Funktion <em>operator new</em> auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1223603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1223603</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 06 Feb 2007 06:39:14 GMT</pubDate></item><item><title><![CDATA[Reply to operator new und Konstruktor on Tue, 06 Feb 2007 13:34:14 GMT]]></title><description><![CDATA[<p>Der Cast vor malloc sollte übrigens weg. Die Funktion gibt sowieso void* zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1223839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1223839</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 06 Feb 2007 13:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to operator new und Konstruktor on Thu, 08 Feb 2007 19:02:10 GMT]]></title><description><![CDATA[<p>hm.. soweit klar. Noch ne Frage dazu:<br />
Ich habe eine lib-datei, die statisch zu meinem Prog gelinkt wird. Wenn in dieser Lib dann ein new aufgerufen wird, wird dann mein operator new aufgerufen oder der standrad-operator?<br />
Ich meine der standard-operator, is ja nix virtuell doer so so dabei. Aber wie könnte man es erreichen ,dass die lib auch den neuen op benutzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225267</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Thu, 08 Feb 2007 19:02:10 GMT</pubDate></item><item><title><![CDATA[Reply to operator new und Konstruktor on Fri, 09 Feb 2007 19:33:34 GMT]]></title><description><![CDATA[<p>hm...<br />
weiß keiner? oder versteht ihr meihne Frage nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225882</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Fri, 09 Feb 2007 19:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to operator new und Konstruktor on Sat, 10 Feb 2007 19:03:00 GMT]]></title><description><![CDATA[<p>Maxi schrieb:</p>
<blockquote>
<p>hm.. soweit klar. Noch ne Frage dazu:<br />
Ich habe eine lib-datei, die statisch zu meinem Prog gelinkt wird. Wenn in dieser Lib dann ein new aufgerufen wird, wird dann mein operator new aufgerufen oder der standrad-operator?</p>
</blockquote>
<p>Dein definierter Operator, falls in deiner Lib die Klassen sich keinen eigenen op-new definiert haben ...</p>
<pre><code class="language-cpp">// in der Lib
class MyClass {

 private:
         int a;
 public:
        // Klasse hat einen eigenen op-new
        void* operator new(size_t size) // (1)
        {  
            return malloc(s); 
            //return ::operator new(size); &lt;&lt; deiner würde aufgerufen
        }

        void func() { int *t = new int; } // deiner wird aufgerufen
};

//in zB main von dir
MyClass *obj = new MyClass;  // (1) wird aufgerufen
obj-&gt;func();
</code></pre>
<p>Also am besten vorsichtig sein wenn man den <strong>globalen</strong> ( überall und in jeder Datei) op-new new schreibt.</p>
<p>Edit: Du kannst es ja auch mal ganz einfach testen. Haue in dein global-op-new eine Ausgabe rein und rufe irgendwas aus deiner Lib auf, wo du davon ausgehen kannst das irgendwas dann new braucht ....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226418</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 10 Feb 2007 19:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to operator new und Konstruktor on Sat, 10 Feb 2007 19:03:25 GMT]]></title><description><![CDATA[<p>oh das trifft sich ja gut <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>
<p>In meinem fall ist das glaub ich eine gute möglichkeit. Ich habe damit alle speicherallokationen von meinen dlls die per plugin eingebunden werden auf die exe umgelenkt und alle deletes auch. Dadurch gibts keine problem mit dem löschen eines bereiches in einer dll der der speicher gar nich gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226425</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 10 Feb 2007 19:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to operator new und Konstruktor on Sat, 10 Feb 2007 20:30:13 GMT]]></title><description><![CDATA[<p>Nein, mit einer DLL funktioniert das NICHT.<br />
Mit einer statischen LIB ja, mit einer DLL nicht.<br />
Dass eine DLL dabei auch eine &quot;.lib&quot; hat die man dazulinkt ist schon klar, trotzdem führt das nicht dazu dass hier der Code in der DLL statisch gelinkt würde. In diesem Fall ist das zugegebenermassen etwas verwirrend.</p>
<p>Du solltest auf jeden Fall wenn du eine DLL meinst auch immer schreiben dass es um eine DLL geht, bzw. um das .lib File einer DLL - sonst können solche Misverständnisse passieren.</p>
<p>BTW: das hat mit Standard C++ nixmehr zu tun, DLLs sind z.B. unter Windows ganz anders implementiert als unter Linux (wo sie strenggenommen nichtmal DLLs heissen, und eben einiges ganz anders läuft). Die Frage gehört also eher ins Visual C++ Forum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226472</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 10 Feb 2007 20:30:13 GMT</pubDate></item><item><title><![CDATA[Reply to operator new und Konstruktor on Sat, 10 Feb 2007 22:17:07 GMT]]></title><description><![CDATA[<p>na ne, hast mich ein bisschen falsch verstanden <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>
<p>also es is so:</p>
<pre><code class="language-cpp">// Image.lib
// Diese Lib wird zu jedem Plugin gelinkt.
class cImage() { ... m_Data = new char[100*100]; };

// plugin1.dll
// ...
void* operator new(size_t s)
{ return AllocFunctionInExe(s); }; // Über funktionszeiger
m_Image = new cImage; // operator new wird von cImage in der lib aufgerufen, dadurch der in der dll definierte

//.exe
void* AllocFuncInExe(size_t s)
{ return mallo(s); }
</code></pre>
<p>hoff das is klarer so <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 />
Ja, das hat wirklich nichts mehr mit std-c++ zu tun.<br />
Aber die anfängliche Frage schno, und weil die hetzt dazu passte hab ich sie einfach mal angefügt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226521</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 10 Feb 2007 22:17:07 GMT</pubDate></item><item><title><![CDATA[Reply to operator new und Konstruktor on Sun, 11 Feb 2007 03:37:59 GMT]]></title><description><![CDATA[<p>Aaaaaaah, Bingo.<br />
Ja, OK, das hab ich falsch verstanden. Ja, so geht das <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/1226618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226618</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 11 Feb 2007 03:37:59 GMT</pubDate></item></channel></rss>