<?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[Was genau ist der new-Platzierungsoperator]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese gerade &quot;Modernes C++-Design&quot; von Alexandrescu. Wie es aussieht bin ich noch nicht ganz reif dafür :). Ich verstehe folgende Policy-Klasse nicht ganz:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
struct MallocCreator
{
  static T* Create()
  {
    void* buf = std::malloc(sizeof(T));
    if (!buf) return 0;
    return new(buf) T;
  }
};
</code></pre>
<p>Um genau zu sein, das hier nicht:</p>
<pre><code class="language-cpp">return new(buf) T;
</code></pre>
<p>Wenn man malloc für Klassenobjekte aufrufen würde, würde ja der Konstruktor nicht aufgerufen werden. Kann es sein, dass <strong>&quot;new(buf) T&quot;</strong> genau das macht ohne jedoch nochmal Speicher zu allozieren?</p>
<p>Ich freue mich auf Hilfe und sage schon mal danke.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/126267/was-genau-ist-der-new-platzierungsoperator</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 14:48:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126267.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Nov 2005 14:41:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was genau ist der new-Platzierungsoperator on Sun, 13 Nov 2005 14:41:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lese gerade &quot;Modernes C++-Design&quot; von Alexandrescu. Wie es aussieht bin ich noch nicht ganz reif dafür :). Ich verstehe folgende Policy-Klasse nicht ganz:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
struct MallocCreator
{
  static T* Create()
  {
    void* buf = std::malloc(sizeof(T));
    if (!buf) return 0;
    return new(buf) T;
  }
};
</code></pre>
<p>Um genau zu sein, das hier nicht:</p>
<pre><code class="language-cpp">return new(buf) T;
</code></pre>
<p>Wenn man malloc für Klassenobjekte aufrufen würde, würde ja der Konstruktor nicht aufgerufen werden. Kann es sein, dass <strong>&quot;new(buf) T&quot;</strong> genau das macht ohne jedoch nochmal Speicher zu allozieren?</p>
<p>Ich freue mich auf Hilfe und sage schon mal danke.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916793</guid><dc:creator><![CDATA[eifrig_lernender]]></dc:creator><pubDate>Sun, 13 Nov 2005 14:41:02 GMT</pubDate></item><item><title><![CDATA[Reply to Was genau ist der new-Platzierungsoperator on Sun, 13 Nov 2005 14:45:28 GMT]]></title><description><![CDATA[<p>Placement new konstruiert ein Objekt in bereits allozierten Speicher rein. In diesem Fall wird ein T in buf konstruiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916799</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sun, 13 Nov 2005 14:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to Was genau ist der new-Platzierungsoperator on Sun, 13 Nov 2005 14:50:24 GMT]]></title><description><![CDATA[<p>eifrig_lernender schrieb:</p>
<blockquote>
<p>Kann es sein, dass <strong>&quot;new(buf) T&quot;</strong> genau das macht ohne jedoch nochmal Speicher zu allozieren?</p>
</blockquote>
<p>So ist es - es wird einfach der Constructor aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916811</guid><dc:creator><![CDATA[Ringding]]></dc:creator><pubDate>Sun, 13 Nov 2005 14:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to Was genau ist der new-Platzierungsoperator on Sun, 13 Nov 2005 14:53:53 GMT]]></title><description><![CDATA[<p>Dankeschön. Das deckt sich ja dann mit meiner Vermutung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916816</guid><dc:creator><![CDATA[eifrig_lernender]]></dc:creator><pubDate>Sun, 13 Nov 2005 14:53:53 GMT</pubDate></item></channel></rss>