<?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[Eigenes Speichermanagement]]></title><description><![CDATA[<p>Folgendes Szenario: Ich habe eine Oberklasse, die das Speichermanagement verwalten soll. U.a ist der Operator new überladen und ruft mit der aktuellen Implementation eigentlich nur den Standardoperator auf:</p>
<pre><code>static void *operator new(size_t size){
		std::cout &lt;&lt; &quot;new aufgerufen. size= &quot; &lt;&lt; size &lt;&lt; std::endl;
		return ::operator new(size);
	}
</code></pre>
<p>Die Unterklasse ist simpel aufgebaut und verfügt nur über ein privates Attribut vom Typ string:</p>
<pre><code>class Person : public Objekt {
public:
	Person(const std::string&amp; n = &quot;N.N&quot;)
		:name(n) {}
	~Person() {
		std::cout &lt;&lt; &quot;Person Destruktor aufgerufen(&quot;
			&lt;&lt; name &lt;&lt; &quot;)&quot; &lt;&lt; std::endl;
	}
	const std::string&amp; getName() const {
		return name;
	}
private:
	std::string name;
};
</code></pre>
<p>Die Anweisung</p>
<pre><code>Person* ptr1 = new Person(&quot;SeppJot&quot;);
</code></pre>
<p>gibt mir für size == 32 aus. Wie zur Hölle kann sizeof(Person) == 32 sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332757/eigenes-speichermanagement</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 12:20:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332757.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 May 2015 15:47:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigenes Speichermanagement on Wed, 20 May 2015 15:47:45 GMT]]></title><description><![CDATA[<p>Folgendes Szenario: Ich habe eine Oberklasse, die das Speichermanagement verwalten soll. U.a ist der Operator new überladen und ruft mit der aktuellen Implementation eigentlich nur den Standardoperator auf:</p>
<pre><code>static void *operator new(size_t size){
		std::cout &lt;&lt; &quot;new aufgerufen. size= &quot; &lt;&lt; size &lt;&lt; std::endl;
		return ::operator new(size);
	}
</code></pre>
<p>Die Unterklasse ist simpel aufgebaut und verfügt nur über ein privates Attribut vom Typ string:</p>
<pre><code>class Person : public Objekt {
public:
	Person(const std::string&amp; n = &quot;N.N&quot;)
		:name(n) {}
	~Person() {
		std::cout &lt;&lt; &quot;Person Destruktor aufgerufen(&quot;
			&lt;&lt; name &lt;&lt; &quot;)&quot; &lt;&lt; std::endl;
	}
	const std::string&amp; getName() const {
		return name;
	}
private:
	std::string name;
};
</code></pre>
<p>Die Anweisung</p>
<pre><code>Person* ptr1 = new Person(&quot;SeppJot&quot;);
</code></pre>
<p>gibt mir für size == 32 aus. Wie zur Hölle kann sizeof(Person) == 32 sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454222</guid><dc:creator><![CDATA[SeppJot]]></dc:creator><pubDate>Wed, 20 May 2015 15:47:45 GMT</pubDate></item><item><title><![CDATA[Reply to Eigenes Speichermanagement on Wed, 20 May 2015 16:00:23 GMT]]></title><description><![CDATA[<p>Warum nicht? <code>Objekt</code> wird wohl mindestens einen virtuellen Destruktor haben, also hat die Klasse eine VMT und die Objekte brauchen eine VMT-Referenz, das kostet <code>sizeof(void*)</code> . Und <code>std::string</code> verwendet vermutlich die Small String Optimization und hat deswegen <code>sizeof(void*) + sizeof(small string buffer)</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454224</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Wed, 20 May 2015 16:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to Eigenes Speichermanagement on Wed, 20 May 2015 16:08:35 GMT]]></title><description><![CDATA[<p>Bisschen zu voreilig geposted.. sizeof(std::string) sind 28 Bytes mit dem void* der VMT kommt man auf 32B.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454226</guid><dc:creator><![CDATA[SeppJot]]></dc:creator><pubDate>Wed, 20 May 2015 16:08:35 GMT</pubDate></item></channel></rss>